Overview
This section provides an overview of the project structure, development workflow, and key practices to follow when contributing to the codebase.
Project Structure
The project follows the template structure from web-base and is organized into the following key folders
├── src/
│ └── lib/
│ │ └── aoh/
│ │ ├── core/
│ │ ... └── unh/
│ │ ├── api/
│ │ ├── components/
│ │ ├── helpers/
│ │ ├── interfaces/
│ │ ├── test/
│ │ ├── constant.ts
│ │ ├── storybook.d.ts
│ │ └── utils.ts
│ │
│
└── routes/
├── (private)/
│ ├── example/
│ │
│ │── aoh/
│ │ └── unh/
│ │ ├── distributions/
│ │ ├── notification-templates/
│ │ └── settings/
│ │
...
├── (private)/
│ ├── example/
│ │
│ │── aoh/
│ │ └── unh/
│ │ └── api/
│ │ └── ....
...
Installing Dependencies
Before starting the development server, install the project dependencies using:
npm i # or npm install
Starting the Development Server
To start the development server, run the following command:
npm run dev
Make sure all required environment variables are properly set in the .env
file.
Code Quality
We follow a consistent coding style enforced by ESLint and Prettier. Before committing code, ensure that it meets the project's style guidelines:
npm run check # Run TypeScript and SvelteKit checks
npx lint-staged # Check for linting issues and format code with Prettier
These checks (check, lint, and format) are already included in the .husky pre-commit hooks to ensure compliance before code is pushed. Refer to this for more info
Modifying Files and Adding Features
When making any changes to the UNH modules, whether adding new features or modifying existing files, ensure that all changes are made strictly within the lib/aoh/unh
, routes/(private)/aoh/unh
or routes/(public)/aoh/unh
folders.
Test your changes locally to verify functionality before proceeding.
Routes and Path Control
To make it easier to manage routes and API endpoints, we use constant variables that list all of them. This helps keep the routes organized and makes it simpler to update or change paths across the project, avoiding hardcoding and ensuring consistency. You can find these constants in lib/aoh/unh/constant.ts