Zawee.Preview.mov
Access to the website here -> Zawee
The Inter-module Project was carried out during the last 2 months of class before the FCT.
The project consists of the Lesson Assignment to Professors of the Department. It will also implement roles and we will have 3 types
- Administrator: Can perform any operation on the tables.
- Registered User: Can consult all the data without making modifications.
- Unregistered User: Can consult the group structure of the current course.
Project is created with:
| FRONTEND | BACKEND | TOOLS | 
|               |       |           | 
- Node.js and npm installed
- MySQL installed and configured
To clone and run this applicaion, you'll need Git and Node.js (which comes with npm) installed on you computer.
Next you'll need to create the eduAssignment database created
# Clone this repository
$ git clone https://github.com/jmcamposdev/integralProjectIZV.git
# Go into the repository
$ cd integralProjectIZV
# Install dependencies on the Server and Client
$ cd client && npm i
$ cd ../server && npm i
# Run the app
$ npm run dev // On the Client and Server
integralProjectIZV/
│
├── client/
│ ├── public/
│ │ └── ... (React public files)
│ ├── src/
│ │ ├── components/
│ │ │ └── ... (React components)
│ │ ├── pages/
│ │ │ └── ... (React pages)
│ │ ├── App.js
│ │ └── index.js
│ │
│ ├── .gitignore
│ ├── package.json
│ └── README.md
│
├── server/
│ ├── controllers/
│ │ └── ... (Node.js controllers)
│ ├── models/
│ │ └── ... (Database models)
│ ├── routes/
│ │ └── ... (Express routes)
│ ├── index.js
│ │
│ ├── .gitignore
│ ├── package.json
│ └── README.md
│
├── .gitignore
├── package.json
├── README.md
└── ...Welcome to the Integral Project RESTful API. This API provides access to the management of all available resources.
The API can be accessed through the following base URL: https://api.zawee.jmcampos.dev
To access certain resources, authentication is required. Be sure to include the x-access-token header with a valid token in the relevant requests.
- POST /auth/signin: Sign in a user. Returns a- JSONobject with the user's data and a token. Requires a- JSONobject with the user's data.
- GET /users: Get all users. Returns a- JSONarray of all users.- x-access-tokenheader required.
- GET /users/:id: Get a user by ID. Returns a- JSONobject with the user's data.- x-access-tokenheader required.
- POST /users: Create a new user. Returns a- JSONobject with the new user's data. Requires a- JSONobject with the user's data.- x-access-tokenheader required.
- PUT /users/:senecaUser: Update a user by ID. Returns a- JSONobject with the updated user's data. Requires a- JSONobject with the user's data.- x-access-tokenheader required.
- DELETE /users/:id: Delete a user by ID. Returns a- JSONobject with the deleted user's data.- x-access-tokenheader required.
- GET /professors: Get all professors. Returns a- JSONarray of all professors.
- GET /professors/:id: Get a professor by ID. Returns a- JSONobject with the professor's data.
- GET /professors/:id/lessons: Get all lessons assigned to a professor by ID. Returns a- JSONarray of all lessons.
- POST /professors: Create a new professor. Returns a- JSONobject with the new professor's data. Requires a- JSONobject with the professor's data.- x-access-tokenheader required.
- PUT /professors/:id: Update a professor by ID. Returns a- JSONobject with the updated professor's data. Requires a- JSONobject with the professor's data.- x-access-tokenheader required.
- DELETE /professors/:id: Delete a professor by ID. Returns a- JSONobject with the deleted professor's data.- x-access-tokenheader required.
- GET /formations: Get all formations. Returns a- JSONarray of all formations.
- GET /formations/:id: Get a formation by ID. Returns a- JSONobject with the formation's data.
- GET /formations/:id/groups: Get all groups of a formation by ID. Returns a- JSONarray of all groups.
- GET /formations/:id/modules: Get all modules of a formation by ID. Returns a- JSONarray of all modules.
- POST /formations: Create a new formation. Returns a- JSONobject with the new formation's data. Requires a- JSONobject with the formation's data.- x-access-tokenheader required.
- PUT /formations/:id: Update a formation by ID. Returns a- JSONobject with the updated formation's data. Requires a- JSONobject with the formation's data.- x-access-tokenheader required.
- DELETE /formations/:id: Delete a formation by ID. Returns a- JSONobject with the deleted formation's data.- x-access-tokenheader required.
- GET /modules: Get all modules. Returns a- JSONarray of all modules.
- GET /modules/:id: Get a module by ID. Returns a- JSONobject with the module's data.
- GET /modules/:id/lessons: Get all lessons of a module by ID. Returns a- JSONarray of all lessons.
- POST /modules: Create a new module. Returns a- JSONobject with the new module's data. Requires a- JSONobject with the module's data.- x-access-tokenheader required.
- PUT /modules/:id: Update a module by ID. Returns a- JSONobject with the updated module's data. Requires a- JSONobject with the module's data.- x-access-tokenheader required.
- DELETE /modules/:id: Delete a module by ID. Returns a- JSONobject with the deleted module's data.- x-access-tokenheader required.
- GET /groups: Get all groups. Returns a- JSONarray of all groups.
- GET /groups/:id: Get a group by ID. Returns a- JSONobject with the group's data.
- GET /groups/:id/lessons: Get all lessons of a group by ID. Returns a- JSONarray of all lessons.
- POST /groups: Create a new group. Returns a- JSONobject with the new group's data. Requires a- JSONobject with the group's data.- x-access-tokenheader required.
- PUT /groups/:id: Update a group by ID. Returns a- JSONobject with the updated group's data. Requires a- JSONobject with the group's data.- x-access-tokenheader required.
- DELETE /groups/:id: Delete a group by ID. Returns a- JSONobject with the deleted group's data.- x-access-tokenheader required.
- GET /lessons: Get all lessons. Returns a- JSONarray of all lessons.
- GET /lessons/:id: Get a lesson by ID. Returns a- JSONobject with the lesson's data.
- GET /lessons-current-year: Get all lessons of the current year e.g. 2024/2025
- POST /lessons: Create a new lesson. Returns a- JSONobject with the new lesson's data. Requires a- JSONobject with the lesson's data.- x-access-tokenheader required.
- POST /lessons-generate: Automatically generates as many lessons as possible with the available groups and modules by assigning the teacher to null.
- PUT /lessons/:id: Update a lesson by ID. Returns a- JSONobject with the updated lesson's data. Requires a- JSONobject with the lesson's data.- x-access-tokenheader required.
- DELETE /lessons/:id: Delete a lesson by ID. Returns a- JSONobject with the deleted lesson's data.- x-access-tokenheader required.
# Request
GET /professors/
# Response
[
  {
    "id": 1,
    "senecaUser": "josemariacampos",
    "name": "José María",
    "firstSurname": "Campos",
    "lastSurname": "Trujillo",
    "specialty": "FP",
  },
  {
    "id": 2,
    "senecaUser": "carloshernandez",
    "name": "Carlos",
    "firstSurname": "Hernández",
    "lastSurname": "Palma",
    "specialty": "Secundary",
  },
]
# Request
POST /professors/
Headers: x-access-token: <token>
{
  "seneceUser": "davidluque",
  "name": "David",
  "firstSurname": "Luque",
  "lastSurname": "Vegas",
  "specialty": "FP"
}
# Response - 201 Created
{
  "id": 3,
  "senecaUser": "davidluque",
  "name": "David",
  "firstSurname": "Luque",
  "lastSurname": "Vegas",
  "specialty": "FP"
}- Management of five tables: Professor, Formation, Module, Group, Lesson.
- Administrators can perform any operation on the tables.
- Registered users can view data without making modifications.
- Unregistered users can view the structure of groups in the current school year.
- Enter data into the Professor, Formation, and Module tables.
- Register data in the Group table.
- Create lessons for the school year, leaving the professor_id field blank (null).
- Multiple lessons can be created for a module, assigned to different professors.
- Create lessons to ensure no hours are left untaught in any module.
- Administrators can filter and assign professors to lessons.
- Authenticated users can check the progress of lesson assignments.
This project is under the MIT License - see the LICENSE file for details.
Campos Trujillo, José María - jmcamposdev
Carlos Hernandez Palma - carloshpdev
Luque Vegas, David - Daviiid999
Capdevila Rodríguez, Víctor - vilacprd
Rodríguez Jareño, Manuel - Manabimassu
We appreciate the collaboration of IES Zaidín-Vergeles in this project.
