- Visual Studio 2022
- ASP.NET & Web Development Workload
- Node.js 14+
- Yarn:
npm install -g yarn
- Yarn:
- PostgreSQL 14
- You can choose to host it on your OS or through Docker (a
docker-compose.ymlhas been provided for convenience).
- You can choose to host it on your OS or through Docker (a
- JRE 8+
- For OpenAPI Generator.
We recommend using Visual Studio 2022 for the backend and VS Code for the frontend but any IDE that supports C#, TypeScript, and ESLint should work just fine.
- Run
dotnet tool restoreto install any necessary CLI tools. - If your development PostgreSQL server does not have an up to date schema, use
dotnet ef database updateto migrate to the latest schema. - Open
Buddies.slnusing Visual Studio. - Use Debug > Start Debugging or Debug > Start Without Debugging to start the backend.
- Open the
Buddies.Webfolder using VS Code. - Run
yarnin the integrated terminal to install NPM dependencies. - Run
yarn devto start the frontend.
Whenever you have introduced a new entity or modified an existing entity in the backend, you will need to create a migration according to the EF Core documentation. To keep the number of migrations in the repository manageable, it is recommended to merge WIP migrations together after completing a feature or bug fix.
Whenever you have added a new request type or modified an existing request type in the backend
and have documented it correctly (e.g. the type shows up on the OpenAPI page), you should update
the frontend types by running yarn gen-types in Buddies.Web.
- Determine the issue ticket you are working on, if applicable.
- Create a branch from
developwith a name related to its purpose, e.g.feat/user-profile. - Implement the necessary functionality in the newly created branch.
- Test the changes (using automated tests, manually, etc).
- Create a PR from the newly created branch to
developand work towards getting it merged.- A PR can be merged when CI passes and is approved by the mentor and a group member.
- At the end of a phase, a group member will merge
developintomain, signifying a "release".