Once you bootstrap and enter your project, fetch your dependencies and start the build server. The server is available at http://localhost:4999
cd kalyna
mix deps.get
mix tableau.serverPosts and pages that are not ready for production can be saved to the _drafts and _wip directories respectively.
These are controlled via application configuration, as seen in config/dev.exs and config/prod.exs
To build for production, run the mix build alias to build your site and compile any assets (depends on what asset you chose when generating your site).
Running your build with MIX_ENV=prod is important so that the live reload JS script is not loaded, and also allows you to configure your app differently in dev vs prod, like showing future posts in dev, but not in prod.
MIX_ENV=prod mix buildGitHub Pages publishes the committed docs/ directory on main. The Pages deployment does not run Tableau or Tailwind. After changing templates, content or styles, rebuild and include the generated files in the same pull request:
MIX_ENV=prod mix build
git add docs/Review the generated diff before committing. Keep config :tableau, :config, out_dir: "docs", the Tailwind output (docs/css/site.css), and the GitHub Pages source (main, /docs) aligned. The custom domain comes from extra/CNAME, which the build copies to docs/CNAME.
Run the Elixir regression tests with mix test. Run browser tests with:
npm ci
npx playwright install chromium
npm testPlaywright builds the production site and starts a temporary static server on port 4100. Desktop and mobile Chromium tests cover both languages, contact links, experience cards, JPEG/image loading, the Carmenta logo, mobile overflow, and system/light/dark preferences (including blocked storage). Failed tests retain traces in test-results/. Use npm run test:ui for the interactive runner.