Personal project to a student schedule classes according his course level. Using GraphQL, Clean Code e Clean Architecture.

Overview

classes-scheduler-graphql

This is a personal project for student scheduling, with classes according his course level. I intend to make just the backend, but I'm opened to work together with whoever wants to create the frontend part.

How to run 🏃

  • Just run using docker-compose
  docker-compose -f docker-compose.dev.yml up -d --build
  • Manually
  yarn start:dev
  • Running tests
  yarn test

Endpoints API 📡

  Base URL and Playground: http://localhost:3333/graphql

Tools 🧰

TypeScript

NestJS

PostgreSQL

Docker

Jest

Database schema 📷

DB Schema

Requirements 👷

Functional requirements
Name OK
01 A Teacher can create many classes
02 A Teacher can create many appointments to the classes
03 A Teacher cannot create more than one appointment at the same period (day and time) and same responsible
04 A Teacher can see all appointments he made in a day
05 A Teacher can see all appointments he made by a period of time
06 A Teacher can check if the Student attended the schedule
07 A Teacher can update the Student level to any other higher
08 A Student can schedule many classes (appointments)
09 A Student cannot schedule more than one class (appointments) at the same period (day and time)
10 A Student can schedule a class only if he has the minimum required level to participate
11 A Student can view all the classes (appointments) where his level is lower than or equal class levels
12 A Teacher must provide a valid responsible to create an appointment
Non-Functional requirements
FR N° Name OK
01 01 A Teacher must select a valid level to create a class
02 02 An Appointment must have an start and finish times
02 03 The start time must be before than the finish one
02 03 A Teacher must select a valid class to create an appointment to it
02 04 An Appointment can be created only by a Teacher
03 05 A message must be shown saying that the period was already chosen
03 06 A new time can be suggested when the Teacher choose an used period
04 07 A date in american format (year-month-day) must be passed
05 08 A initial and final dates in american format (year-month-day) must be passed and return grouped by day
09 09 A message must be shown saying that the Student cannot select two classes at the same period and which was chosen before
12 10 A responsible can be the teacher itself or another one
05 11 The period of time cannot be greater than 30 days

To the future 🚀

  • Add authentication and authorization;
  • See the available classes and how many people are in the appointment in real-time.
You might also like...

Simple REST API using Express with TypeScript, PostgreSQL, and MySQL to practice the Clean Architecture by Uncle Bob.

Clean-Architecture Simple REST API using Express with TypeScript, PostgreSQL, and MySQL to practice the Clean Architecture by Uncle Bob. About This RE

Oct 16, 2022

Get-A-Room example application using Domain Driven Design and Clean Architecture. Written in TypeScript and deployed to AWS with a serverless stack.

Get-A-Room example application using Domain Driven Design and Clean Architecture. Written in TypeScript and deployed to AWS with a serverless stack.

Domain Driven Microservices on AWS in Practice This project provides a Domain Driven Design & Clean Architecture-informed, multi-service event-driven

Dec 31, 2022

This is a little script that shows how to ddos a website. This is for example purposes only. Don't ddos a website without the consent of his owner

Dddos-Script This is a little script to ddos a website. This is for example purposes only. I am not responsable of what you do with it If you like thi

Dec 17, 2022

This application displays scores submitted by different players from an API service. It also allows a user to submit his/her score while saving the data on the API.

Leaderboard This application displays scores submitted by different players from an API service. It also allows a user to submit his/her score while p

Jul 15, 2022

A Minimalist to do list website where user can add, remove and edit multiple tasks and All the changes user makes in his to do list is saved in browser local storage so that it can be accessed later.

Testing for Add Remove function in To Do List App Jest framework is used for testing. Created (addremove.test.js) for a file containing the add item a

Aug 15, 2022

A simple to-do list created while a student in Microverse using JavaScript to add and delete selected tasks.

A simple to-do list created while a student in Microverse using JavaScript to add and delete selected tasks.

To-Do List This is a simple To-Do list page I made following the requirements from Microverse. You can check it out here: https://thi-ponce.github.io/

Nov 28, 2022

Add icons to the AtCoder standings table according to ratings.

Add icons to the AtCoder standings table according to ratings.

ac-rating-icon AtCoder のコンテスト順位表に、レーティングに対応したアイコンを追加するユーザースクリプトです。 アイデア元: https://twitter.com/e869120/status/1519310341024677888 灰色の細分化について 内部レート 0 以上

May 6, 2022

Detect browser, and render view according to the detected browser type.

react-browser-detector Detect browser, and render view according to the detected browser type. Installation To install, you can use npm or yarn: npm i

Jul 13, 2022

building clean node.js architecture

node-clean-architecture 견고하고 깔끔한 Node.js Architecture를 설계합니다. Description Express with TypeScript build beautiful, clean node.js architecture TypeDI D

May 30, 2022
Owner
Giovanny Lucas
Academic in Software Engineering and programmer. Actually working with NodeJs BackEnd and studying DevOps Culture and Mobile, eventually.
Giovanny Lucas
🤖 Tailwind CSS assistant helps you to edit classes (includes JIT & ignores purge), toggle breakpoint classes on an element and view current breakpoint

Tailwind CSS Assistant See it in action on this example website ?? ✅ Small JavaScript package that helps you work with Tailwind CSS by... Showing you

Mark Mead 30 Dec 28, 2022
GraphQL Hive provides all the tools the get visibility of your GraphQL architecture at all stages, from standalone APIs to composed schemas (Federation, Stitching)

GraphQL Hive GraphQL Hive provides all the tools the get visibility of your GraphQL architecture at all stages, from standalone APIs to composed schem

Kamil Kisiela 184 Dec 21, 2022
We are students of group named "Special-Team" of GоIT academy. We graduated JavaScript course and for consolidate in practice 📌 knowledges received on this course, we together 🤝 developed graduation project

Проект сайту "Filmoteka" Привіт! ?? Ми студенти групи під назвою "Special-Team" академії GоIT ?? ?? Ми закінчили курс JavaScript і для того, щоб закрі

Oksana Banshchykova 12 Jan 3, 2023
In this project, I built a simple HTML list of To Do tasks. The list is styled according to the specifications listed later in this lesson. This simple web page is built using webpack and served by a webpack dev server.

Awesome books:JavaScript Using Modules In this project, I built a simple HTML list of To Do tasks. The list is styled according to the specifications

 Hassan Momanyi 10 Nov 25, 2022
A leaderboard created using Leaderboard API service, Webpack, and Gitflow. The user can add a new score and refresh to see his ranking in the leaderboard.

Leaderboard A leaderboard created using Leaderboard API service, webpack, and gitflow. The user can add a new score and refresh to see his ranking in

ABDUL ALI 13 Dec 26, 2022
A simple leaderboard project made while a student in Microverse using API to get scores for a game, JavaScript, HTML and basic CSS

A simple leaderboard project made while a student in Microverse using API to get scores for a game, JavaScript, HTML and basic CSS

Thiago Ponce 6 Nov 28, 2022
Project developed in typescript with clean architecture + tdd for demonstration purposes.

Description Project developed in typescript with clean architecture + tdd for demonstration purposes in Usystem. Installation $ yarn Running the app #

USystem - Desenvolvimento Ágil de Softwares 1 Oct 5, 2022
Full-stack-todo-rust-course - we are building this out now in prep for the real course

full-stack-todo-rust-course wip - we are building this out now in prep for the real course Plan Come up with the requirements Create user stories Desi

Brooks Builds 89 Jan 2, 2023
Course material for a ~10 hours introductionary course for Julia. Topics: Introduction, Parallel Programming, Data Science

Development We use Franklin.jl to generate the lecture material. To do so, simply activate the environment, use Franklin and run the local server: act

GregorE 3 Dec 15, 2022
NextJS with GraphQL using type-graphl and graphql-codegen adoptable dogs example code

This is a Next.js project bootstrapped with create-next-app. Getting Started First, run the development server: npm run dev # or yarn dev Open http://

Jack Herrington 2 Mar 31, 2022