What changed
Less template boilerplate
The page now reads like a product entry point instead of a generated setup checklist.
A cleaner Angular starter for marketing sites and product pages, with SSR-safe prerendering, theme-aware styling, and a layout that feels current in both light and dark mode.
Render mode
Prerender first
Primary output
`dist/app/browser`
UI system
Tailwind + CSS tokens
Theme preview
Light and dark stay aligned
Modern rhythm
Clear hierarchy, calmer surfaces, and spacing that reads like a landing page.
Proper theme handling
Surfaces, borders, and accents derive from the shared CSS variables instead of fixed light-only colors.
:root {
--c-bg-primary;
--c-bg-secondary;
--c-text-secondary;
--c-border;
}
What changed
The page now reads like a product entry point instead of a generated setup checklist.
Styling approach
Layout, typography, spacing, borders, and most visuals are now driven by utilities tied to the theme tokens.
Visual direction
Brighter focus on hierarchy, restrained gradients, and more premium card treatment in both modes.
Foundation
Keep the app fast, crawlable, and theme-safe without abandoning the Angular patterns this repo already uses.
Workflow
Run the project as a normal Angular dev server while keeping the final target static and prerendered.
Angular generates browser and server artifacts, with static HTML emitted for the prerendered routes.
Deploy `dist/app/browser` to static hosting and keep the SSR server available only when you actually need it.
Commands
Project map
Bootstrap flow
Translations
Project structure
SSR configuration lives in `app.config.server.ts` and `app.routes.server.ts`.
Development and build
Prerender configuration
The default setup in `src/app/app.routes.server.ts` uses `RenderMode.Prerender`, which makes Angular generate static HTML for every route during the build.
Bootstrap data details
Server endpoint:
`${environment.apiUrl}/api/regionit/bootstrap/${environment.companyId}`
Payload shape:
export interface BootstrapData {
company?: Company;
items?: Item[];
}
Environment keys involved
Current fallback behavior
Tailwind and SCSS
Recommended split
src/styles.scss
src/app/**/**/*.scss
src/styles/_theme.scss
Icons and accessibility
Icons are loaded in `src/index.html`. Keep icons decorative with `aria-hidden="true"` and put text or `aria-label` on the interactive element itself.
Translations guide
Files
src/i18n/<code>.ts
src/i18n/index.ts
src/app/feature/language/language.type.ts
src/app/feature/language/language.interface.ts
src/app/feature/language/language.const.ts
src/app/feature/language/language.service.ts
src/app/app.config.ts
`provideTranslate(...)` registers the default language from `src/i18n/index.ts`.
`LanguageService` switches languages with `TranslateService.setMany(...)`.
English source text is used as the translation key.
Store language labels and translations as real UTF-8 text.
When adding or updating translations
Environments
Use `src/environments/environment.ts` and `src/environments/environment.prod.ts` for public front-end configuration such as API URLs, feature flags, analytics toggles, and external service settings.
Production builds replace `environment.ts` with `environment.prod.ts`. Do not store secrets in environment files.
Code style
AI and requirements
If AI outside the IDE does not automatically read repo rules, include `AGENTS.md` in the prompt or context.
Node.js 20+
npm 11+
Code structure guide
Pages
Create app pages inside `src/app/pages/` and lazy load them from `src/app/app.routes.ts`.
src/app/pages/home/home.component.ts
src/app/pages/about/about.component.ts
ng generate component pages/home
ng g c pages/home
Feature modules
For back-end connected business logic, use `src/app/feature/<name>/`.
src/app/feature/user/components/
src/app/feature/user/directives/
src/app/feature/user/interfaces/
src/app/feature/user/pages/
src/app/feature/user/pipes/
src/app/feature/user/services/user.service.ts
ng g c feature/user/pages/user-profile
ng g c feature/user/components/user-card
ng g d feature/user/directives/user-focus
ng g p feature/user/pipes/user-name
ng g s feature/user/services/user
Shared generic code
Reusable code that is not feature-specific can live directly under `src/app`.
src/app/components/
src/app/directives/
src/app/interfaces/
src/app/pipes/phone.pipe.ts
src/app/services/
ng g c components/page-header
ng g d directives/autofocus
ng g p pipes/phone
ng g s services/api
Extra structure notes
src/app/feature/user/interfaces/user.interface.ts
src/app/feature/user/interfaces/user-response.interface.ts
src/app/interfaces/api-response.interface.ts
src/app/interfaces/select-option.interface.ts
Start a new project
New git history
`git remote add origin ...` connects your local repository to the GitHub remote, and a Conventional Commit like `chore(init): bootstrap project from ngx-default template` is the recommended first commit.
Deployment
GitHub Actions can build, copy `CNAME`, and publish the prerendered browser output. The SSR server remains optional infrastructure, not a default runtime dependency.
Suggested path
`.github/workflows/deploy.yml`
`dist/app/browser`
`dist/app/server`
`CNAME` for the custom domain
`ngx.itkamianets.com` as the example domain
License
Scripts
npm start
npm run build
npm run serve:ssr:app