movahedan / whoiscoming

The purpose of this application is to help individuals plan their work schedule by allowing them to enter their desired hours to be in the office every workday.
2 stars 1 forks source link

Whoiscoming

The proposed project is a comprehensive office attendance management system, designed to streamline the process of logging and tracking office days for all team members. Divided into two main backend services and two frontend applications, the system ensures a microservices-based architecture that enhances maintainability and scalability. The backend services are built using Nest.js, with one service handling authentication and settings, and the other managing timing table data, all backed by a Postgresql database and Prisma as the ORM. On the frontend, we have two separate Next.js applications, the first frontend app is focused on authentication, while the second handles user settings and office day entries. The entire project is structured as a monorepo using Turborepo, ensuring streamlined workflow and code sharing, with GitHub Actions and Vercel handling the CI/CD pipeline, and an OpenAPI specification in place to auto-generate the data layer for the frontend, ensuring consistency and speeding up the development process. This setup not only facilitates a clear separation of concerns but also provides a robust, scalable, and user-friendly solution to office attendance management.

What's inside?

This Turborepo includes the following packages/apps:

Apps and Packages

Apps

Packages

Each package/app is 100% TypeScript.

Utilities

This Turborepo has some additional tools already setup for you:

Build

To build all apps and packages, run the following command:

yarn build

Develop

To develop all apps and packages, run the following command:

yarn dev

Remote Caching

Turborepo can use a technique known as Remote Caching to share cache artifacts across machines, enabling you to share build caches with your team and CI/CD pipelines.

By default, Turborepo will cache locally. To enable Remote Caching you will need an account with Vercel. If you don't have an account you can create one, then enter the following commands:

npx turbo login

This will authenticate the Turborepo CLI with your Vercel account.

Next, you can link your Turborepo to your Remote Cache by running the following command from the root of your Turborepo:

npx turbo link

Useful Links

Learn more about the power of Turborepo: