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 aJSON
object with the user's data and a token. Requires aJSON
object with the user's data.
GET /users
: Get all users. Returns aJSON
array of all users.x-access-token
header required.GET /users/:id
: Get a user by ID. Returns aJSON
object with the user's data.x-access-token
header required.POST /users
: Create a new user. Returns aJSON
object with the new user's data. Requires aJSON
object with the user's data.x-access-token
header required.PUT /users/:senecaUser
: Update a user by ID. Returns aJSON
object with the updated user's data. Requires aJSON
object with the user's data.x-access-token
header required.DELETE /users/:id
: Delete a user by ID. Returns aJSON
object with the deleted user's data.x-access-token
header required.
GET /professors
: Get all professors. Returns aJSON
array of all professors.GET /professors/:id
: Get a professor by ID. Returns aJSON
object with the professor's data.GET /professors/:id/lessons
: Get all lessons assigned to a professor by ID. Returns aJSON
array of all lessons.POST /professors
: Create a new professor. Returns aJSON
object with the new professor's data. Requires aJSON
object with the professor's data.x-access-token
header required.PUT /professors/:id
: Update a professor by ID. Returns aJSON
object with the updated professor's data. Requires aJSON
object with the professor's data.x-access-token
header required.DELETE /professors/:id
: Delete a professor by ID. Returns aJSON
object with the deleted professor's data.x-access-token
header required.
GET /formations
: Get all formations. Returns aJSON
array of all formations.GET /formations/:id
: Get a formation by ID. Returns aJSON
object with the formation's data.GET /formations/:id/groups
: Get all groups of a formation by ID. Returns aJSON
array of all groups.GET /formations/:id/modules
: Get all modules of a formation by ID. Returns aJSON
array of all modules.POST /formations
: Create a new formation. Returns aJSON
object with the new formation's data. Requires aJSON
object with the formation's data.x-access-token
header required.PUT /formations/:id
: Update a formation by ID. Returns aJSON
object with the updated formation's data. Requires aJSON
object with the formation's data.x-access-token
header required.DELETE /formations/:id
: Delete a formation by ID. Returns aJSON
object with the deleted formation's data.x-access-token
header required.
GET /modules
: Get all modules. Returns aJSON
array of all modules.GET /modules/:id
: Get a module by ID. Returns aJSON
object with the module's data.GET /modules/:id/lessons
: Get all lessons of a module by ID. Returns aJSON
array of all lessons.POST /modules
: Create a new module. Returns aJSON
object with the new module's data. Requires aJSON
object with the module's data.x-access-token
header required.PUT /modules/:id
: Update a module by ID. Returns aJSON
object with the updated module's data. Requires aJSON
object with the module's data.x-access-token
header required.DELETE /modules/:id
: Delete a module by ID. Returns aJSON
object with the deleted module's data.x-access-token
header required.
GET /groups
: Get all groups. Returns aJSON
array of all groups.GET /groups/:id
: Get a group by ID. Returns aJSON
object with the group's data.GET /groups/:id/lessons
: Get all lessons of a group by ID. Returns aJSON
array of all lessons.POST /groups
: Create a new group. Returns aJSON
object with the new group's data. Requires aJSON
object with the group's data.x-access-token
header required.PUT /groups/:id
: Update a group by ID. Returns aJSON
object with the updated group's data. Requires aJSON
object with the group's data.x-access-token
header required.DELETE /groups/:id
: Delete a group by ID. Returns aJSON
object with the deleted group's data.x-access-token
header required.
GET /lessons
: Get all lessons. Returns aJSON
array of all lessons.GET /lessons/:id
: Get a lesson by ID. Returns aJSON
object with the lesson's data.GET /lessons-current-year
: Get all lessons of the current year e.g. 2024/2025POST /lessons
: Create a new lesson. Returns aJSON
object with the new lesson's data. Requires aJSON
object with the lesson's data.x-access-token
header 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 aJSON
object with the updated lesson's data. Requires aJSON
object with the lesson's data.x-access-token
header required.DELETE /lessons/:id
: Delete a lesson by ID. Returns aJSON
object with the deleted lesson's data.x-access-token
header 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.