{"id":17781589,"url":"https://github.com/emanuelangel/lab-2","last_synced_at":"2026-04-11T09:37:51.348Z","repository":{"id":259636922,"uuid":"866836393","full_name":"EmanuelAngel/lab-2","owner":"EmanuelAngel","description":"Aplicación Agenda de Consultorios - Laboratorio 2","archived":false,"fork":false,"pushed_at":"2024-12-06T06:26:43.000Z","size":758,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-14T12:42:38.504Z","etag":null,"topics":["authentication","bcrypt","bootstrap","cookies","express","jsonwebtoken","mysql","pug","sessions","zod"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EmanuelAngel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-03T00:40:08.000Z","updated_at":"2024-12-06T06:26:47.000Z","dependencies_parsed_at":"2024-10-27T02:17:12.413Z","dependency_job_id":"ae487387-8a93-4512-88e3-8128c249e58a","html_url":"https://github.com/EmanuelAngel/lab-2","commit_stats":{"total_commits":34,"total_committers":2,"mean_commits":17.0,"dds":0.4411764705882353,"last_synced_commit":"03d9989c6a70703be939a351a813cc71ea319291"},"previous_names":["emanuelangel/lab-2"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmanuelAngel%2Flab-2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmanuelAngel%2Flab-2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmanuelAngel%2Flab-2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmanuelAngel%2Flab-2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EmanuelAngel","download_url":"https://codeload.github.com/EmanuelAngel/lab-2/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229705476,"owners_count":18110792,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authentication","bcrypt","bootstrap","cookies","express","jsonwebtoken","mysql","pug","sessions","zod"],"created_at":"2024-10-27T04:03:35.613Z","updated_at":"2026-04-11T09:37:51.254Z","avatar_url":"https://github.com/EmanuelAngel.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Welcome to our project / Bienvenido a nuestro proyecto\n\n- [🇪🇸 Leer en español](README_es.md)\n\n# Clinic Appointment Scheduler - Laboratory 2\n\nRepository containing the source code for the Clinic Appointment Scheduler project, part of the \"Laboratory 2\" course in the \"University Technical Degree in Software Development\" program at [Universidad de la Punta](https://www.ulp.edu.ar/) in San Luis, Argentina.\n\n## Team Members\n\n- [Angel Emanuel](https://github.com/EmanuelAngel)\n- [Alcaraz Rodrigo Nicolás](https://github.com/RodrigoNAlcaraz)\n\n## Recommendations\n\n- **Node.js** Version used in the project: v20.14. [Recommended LTS Version](https://nodejs.org/en/download/prebuilt-installer)\n\n## Description\n\n- Sign up, log in, and log out.\n- Create, list, edit, activate, and deactivate patients.\n- Create, list, edit, activate, and deactivate professionals (doctors).\n- Create, list, edit, activate, and deactivate specialties.\n- List schedules.\n- Assign an appointment to a patient in an available time slot of a schedule.\n\n## Details\n\n- A patient can have none or multiple health insurance plans.\n- A professional can have one or more specialties.\n- Each schedule corresponds to a registration in a professional's specialty.\n- Schedules can include appointments on different days, both morning and afternoon.\n- Schedule time slots can be fragmented, allowing unavailable time slots on the same day.\n- Secure access to the application based on user roles (e.g., admin, professional, patient).\n\n## Instructions to Run the Project Locally\n\n1. Clone the repository:\n\n```bash\ngit clone https://github.com/EmanuelAngel/lab-2.git\n```\n\n2. Navigate to the cloned folder:\n\n```bash\ncd lab-2\n```\n\n3. Install dependencies:\n\n```bash\nnpm|yarn|pnpm install\n```\n\n4. Download the database copy and import it into a MySQL manager.\n\n5. Create a `.env` file and modify the environment variables according to your setup:\n\n```bash\nNODE_ENV = development\nPORT = 3001\nDB_HOST = localhost\nDB_USER = root\nDB_PORT = 3306\nDB_PASS =\nDB_NAME = mydb\nDB_CONNECTION_LIMIT = 10\nJWT_SECRET = secret_very_secret\nJWT_EXPIRES = 1h\n```\n\n6. Start the server:\n\n```bash\nnpm|yarn|pnpm run dev\n```\n\n## Project Structure\n\n```bash\n.\n├── public/                 # Static files (CSS, JS)\n├── views/                  # Dynamic views in Pug\n├── src/                    # Main source code\n│   ├── .bin/               # Entry point - Server\n│   ├── config/             # Database configuration\n│   ├── middlewares/        # Application middlewares\n│   ├── migrations/         # Database change history\n│   ├── apps/               # Application modules\n│   │   ├── agenda_base/    # Schedule module\n│   │   │   ├── agenda_base.http   # HTTP request testing\n│   │   │   ├── controller.js\n│   │   │   ├── router.js\n│   │   │   ├── model.js\n│   │   │   └── schema.js          # Validation schemas\n│   │   ├── auth/           # Authentication and authorization module\n│   │   ├── pacientes/      # Patients module\n│   │   ├── profesionales/  # Professionals module\n│   │   └── ...             # Other modules\n│   └── app.js              # Main application configuration\n├── package.json\n├── db.copy.sql             # Latest database version\n└── .env                    # Environment variables\n```\n\n## Technologies Used\n\n- [Express v4.19.0](https://expressjs.com/): Node.js Framework.\n- [MySQL v8.0](https://www.mysql.com/): Relational database management system. - Used for persistent storage of patients, professionals, schedules, appointments, and health insurance data.\n- [Pug](https://pugjs.org/): Template engine for Node.js - Used to generate dynamic views.\n- [Bootstrap](https://getbootstrap.com/): Feature-packed frontend toolkit.\n- [Bootstrap Icons](https://icons.getbootstrap.com/): Icons for Bootstrap\n- [Zod](https://zod.dev/): Schema declaration and validation library.\n- [Render](https://render.com/): Hosting service for deployment.\n- [StandardJS](https://standardjs.com/): JavaScript style guide, linter, and formatter.\n- [REST Client](https://marketplace.visualstudio.com/items?itemName=humao.rest-client): Visual Studio Code Extension tool for making and testing HTTP requests.\n- [JSON Web Tokens](https://jwt.io/): For authentication and role-based access control.\n- [bcrypt](https://www.npmjs.com/package/bcrypt): For hashing, salting, and verifying passwords.\n- [cookie-parser](https://www.npmjs.com/package/cookie-parser): Middleware for parsing cookies in HTTP requests.\n- [morgan](https://www.npmjs.com/package/morgan): Middleware for logging HTTP requests in Node.js.\n- [dotenv](https://www.npmjs.com/package/dotenv): Loads environment variables from a `.env` file.\n- [cors](https://www.npmjs.com/package/cors): Middleware to enable CORS (Cross-Origin Resource Sharing) in web applications.\n- [nodemon](https://nodemon.io/): Tool that automatically restarts a Node.js application when file changes are detected.\n\n## Future Scalability\n\nThis project has been designed and architected with scalability in mind, ready to integrate future functionalities such as:\n\n- Management of overbooked appointments.\n- Additional appointment states (canceled, rescheduled, etc.).\n- Handling photocopies of ID documents.\n- Advanced administration panel.\n\nThe modular structure of the project facilitates the incorporation of these and other features while maintaining organized and maintainable code.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femanuelangel%2Flab-2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femanuelangel%2Flab-2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femanuelangel%2Flab-2/lists"}