{"id":26030052,"url":"https://github.com/jbrannelid/bookingsystemapi","last_synced_at":"2026-05-06T13:13:38.166Z","repository":{"id":280665615,"uuid":"942761782","full_name":"JBrannelid/BookingSystemAPI","owner":"JBrannelid","description":"A minimal API booking system for hair salons built with ASP.NET Core. School project for Chas Academy fullstack .NET program.","archived":false,"fork":false,"pushed_at":"2025-03-04T16:32:02.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-04T17:33:25.421Z","etag":null,"topics":["aspnetcore","booking-system","csharp","dotnet","entity-framework","minimal-api","rest-api","school-project"],"latest_commit_sha":null,"homepage":"","language":"C#","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/JBrannelid.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":"2025-03-04T16:24:43.000Z","updated_at":"2025-03-04T16:37:04.000Z","dependencies_parsed_at":"2025-03-04T17:34:38.212Z","dependency_job_id":"fd24be36-0336-480d-b352-acc2bcd02ea0","html_url":"https://github.com/JBrannelid/BookingSystemAPI","commit_stats":null,"previous_names":["jbrannelid/bookingsystemapi"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JBrannelid%2FBookingSystemAPI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JBrannelid%2FBookingSystemAPI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JBrannelid%2FBookingSystemAPI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JBrannelid%2FBookingSystemAPI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JBrannelid","download_url":"https://codeload.github.com/JBrannelid/BookingSystemAPI/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242259903,"owners_count":20098429,"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":["aspnetcore","booking-system","csharp","dotnet","entity-framework","minimal-api","rest-api","school-project"],"created_at":"2025-03-06T18:19:39.121Z","updated_at":"2026-05-06T13:13:38.107Z","avatar_url":"https://github.com/JBrannelid.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# 💇‍♀️ Booking System API\n\n![Booking System API](https://plus.unsplash.com/premium_photo-1661963874418-df1110ee39c1?w=900\u0026auto=format\u0026fit=crop\u0026q=60\u0026ixlib=rb-4.0.3\u0026ixid=M3wxMjA3fDB8MHxzZWFyY2h8MXx8Y29kZXxlbnwwfHwwfHx8MA%3D%3D)\n\n## 📋 About the Project\n\nThis is a school project from Chas Academy's Fullstack .NET Developer program. The project is a booking system API built with ASP.NET Core Minimal API that manages bookings, customers, and employees for a hair salon.\n\n## 📢 Background\n\nKlipp \u0026 Style Salon is a hair salon in a medium-sized city looking to modernize their booking system. Currently, they handle bookings via phone and a paper calendar, which often leads to double bookings and misunderstandings.\n\nThe salon has asked **DevSolve AB** to develop a backend solution where they can manage their appointments digitally. This API is the solution to that request.\n\n## ✨ Core Features\n\n- **Manage Bookings**: Create, view, update, and delete hair salon appointments\n- **View Booked Times**: Stylists can retrieve a list of all booked appointments\n- **Cancel Appointments**: Remove bookings when customers cancel\n\nEach booking includes:\n- 📅 Date (YYYY-MM-DD)\n- ⏰ Time (HH:MM)\n- 💈 Stylist name\n- 👤 Customer name\n- 📱 Customer phone number\n- 📝 Description of the service\n\n## 🛠️ Technologies\n\n- ASP.NET Core Minimal API\n- Entity Framework Core\n- SQL Server\n- Swagger/OpenAPI\n\n## 🔄 API Structure\n\nThe API consists of three main components:\n\n### 📅 Bookings\n- Get all bookings\n- Get booking by ID\n- Create new booking\n- Update booking\n- Delete booking\n- Get bookings for a specific date\n\n### 👥 Customers\n- Get all customers\n- Get customer by ID\n- Create new customer\n- Update customer\n- Delete customer\n\n### 💈 Employees (Stylists)\n- Get all employees\n- Get employee by ID\n- Create new employee\n- Update employee\n- Delete employee\n\n## 🚀 Getting Started\n\n1. Clone the project\n2. Configure your database connection string in `appsettings.json`:\n```json\n{\n  \"ConnectionStrings\": {\n    \"DefaultConnection\": \"Data Source=(localdb)\\\\MSSQLLocalDB;Initial Catalog=BookingSystemDb;Integrated Security=True;Encrypt=True;Trust Server Certificate=True;\"\n  }\n}\n```\n3. Run the following commands:\n\n```bash\n# Create the database\nadd-migration \"init\"\ndatabase-update\n\n# Start the application\ndotnet run\n```\n\n## 🔐 API Key Authentication\n\nThe API is protected with an API key:\n\n1. Generate a new GUID and add it to appsettings.json as \"ApiKey\":\n```json\n{\n  \"ApiKey\": \"00000000-0000-0000-0000-000000000000\"\n}\n```\n\n2. Include the key in your request header for every API call:\n```\nX-Api-Key: your-guid-api-key\n```\n\nWithout a valid API key, all requests will be rejected with a 401 Unauthorized status code.\n\n## 📂 Project Structure\n\n- **Models**: Data models for bookings, customers, and employees\n- **DTOs**: Data Transfer Objects for safe data transfer\n- **Endpoints**: Minimal API endpoints for each entity\n- **Data**: DbContext for database connectivity\n- **Middleware**: API key authentication\n\n## 🎯 Learning Objectives\n\nThrough this project, I have:\n- Created a RESTful API with ASP.NET Core Minimal API\n- Implemented EF Core for data access\n- Used the DTO pattern to separate application logic from data models\n- Implemented basic authentication with an API key\n- Used Swagger or Postman for API documentation\n\n## 👨‍💻 Developed By\n\n- Student at Chas Academy\n- Fullstack .NET Developer program 2024","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbrannelid%2Fbookingsystemapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjbrannelid%2Fbookingsystemapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbrannelid%2Fbookingsystemapi/lists"}