Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jsfame/api.scheduler.nas
backend application that contains logic for scheduling sessions with dean of a university
https://github.com/jsfame/api.scheduler.nas
nest-js schedule-meeting-with-dean schedule-meetings scheduler-api
Last synced: 8 days ago
JSON representation
backend application that contains logic for scheduling sessions with dean of a university
- Host: GitHub
- URL: https://github.com/jsfame/api.scheduler.nas
- Owner: jsFame
- License: mit
- Created: 2023-07-12T23:23:52.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-07-24T00:26:32.000Z (over 1 year ago)
- Last Synced: 2024-11-14T07:47:32.560Z (2 months ago)
- Topics: nest-js, schedule-meeting-with-dean, schedule-meetings, scheduler-api
- Language: TypeScript
- Homepage: https://jsfame.github.io/api.scheduler.nas/
- Size: 2.3 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# api.scheduler.nas
[![E2E](https://github.com/jsFame/api.scheduler.nas/actions/workflows/e2e.yaml/badge.svg)](https://github.com/jsFame/api.scheduler.nas/actions/workflows/e2e.yaml)
[![Technical Documentation](https://github.com/jsFame/api.scheduler.nas/actions/workflows/gitpages.yaml/badge.svg)](https://github.com/jsFame/api.scheduler.nas/actions/workflows/gitpages.yaml)
[![Docker Builds](https://github.com/jsFame/api.scheduler.nas/actions/workflows/docker.yaml/badge.svg)](https://github.com/jsFame/api.scheduler.nas/actions/workflows/docker.yaml)
[![Cross-Node18,19,20](https://github.com/jsFame/api.scheduler.nas/actions/workflows/cross.yaml/badge.svg)](https://github.com/jsFame/api.scheduler.nas/actions/workflows/cross.yaml)# Inspiration
During my college years, I found that teachers, students & myself would often have to
stand outside the dean's office for long hours. I found this very disturbing as a Computer
Science Engineering Student. I saw the potential of a software scheduler that would make
everyone's life easy.From the technical side, my main source of motivation was the simplicity and elegance of https://www.when2meet.com
## Description
Scheduler RESTFul API Server built using NestJS, Prisma, REST and PostgreSQL.
Built with ❤️on top of
- [x] Typescript
- [x] [NestJS](https://github.com/nestjs/nest)
- [x] [Prisma-ORM](https://www.prisma.io)
- [x] [Passport.js](https://docs.nestjs.com/recipes/passport)
- [x] [ReST- API Architecture Style](https://en.wikipedia.org/wiki/Representational_state_transfer)
- [x] [PostgreSQL](https://www.postgresql.org)## About Scheduler.nas
### Functional specs
Scheduler allows users to register, create and manage their calendar and events
- User [Host&Guest] SignUp & SignIn
- Create Events for every day
- Create timeslots with availability status for events applicable for everyday
- Schedule meetings/sessions based on available timeslots provided by the host### Technical methodologies followed
- Modular architecture: Business Logic & Auth handled in separate modules, separating concerns.
- HTTP requests are handled by Controllers
- API documentation using nest/swagger module
- Business logic is implemented in Services
- Database interactions are handled using Prisma
- Validation using NestJS Pipes
- Data Transfer Object(DTO) pattern for transferring data between layers
- Configuration management using .env files for development, test & prod configs
- Authentication / Authorization, Event ownership by users
- PassportJS, JWT tokens, Password hashing, salts
- Unit tests using Jest
- Supertest for E2E testing### Technical documentation using [Compodoc](https://jsfame.github.io/api.scheduler.nas/)
As NestJS is heavily inspired by Angular, we can generate the documentation about project
structure modules, controllers, services etc. I have generated the docs.Find 'em here - https://jsfame.github.io/api.scheduler.nas/
## Installation
```
npm install -g pnpm
pnpm install
```## Running the app
### Prerequisite for running the app in any mode - dev/test/prod
- Copy `.env.example` with `.env`
- Fill in the env vars in `.env````bash
# development
$ pnpm run start# watch mode
$ pnpm run start:dev# production mode
$ pnpm run start:prod
```## Test
```bash
# unit tests
$ pnpm run test# e2e tests
$ pnpm run test:e2e# test coverage
$ pnpm run test:cov
```## License
This repo is [MIT licensed](LICENSE).