# Resbyra 

## Project Summary

**Resbyra** is a collaborative travel-agency booking application developed as an agile school project. The system provides a REST API and a web frontend for browsing destinations, creating travel packages, managing accommodations, and handling bookings.

The application supports both ready-made packages and user-created custom travel cards. It also includes authentication, role-based functionality, CRUD operations, search endpoints, and relationships between travel entities such as packages, destinations, activities, hotels, rooms, and amenities.

## My Technical Contribution and Experience

Through this project, I worked with:

- Designing and implementing RESTful API endpoints.
- Developing a .NET Minimal API using C#.
- Connecting an application to a MySQL relational database.
- Modeling entities and many-to-many relationships with foreign keys and junction tables.
- Implementing CRUD functionality for users, countries, cities, destinations, packages, hotels, rooms, activities, amenities, bookings, and custom travel cards.
- Building authentication flows for registration, login, logout, and current-user access.
- Creating search and filtering endpoints.
- Serving frontend files from the ASP.NET application.
- Testing API journeys with HTTP request files and API testing tools.
- Working collaboratively with Git, GitHub, feature branches, and SCRUM practices.

## Tools and Technologies Used

| Area | Tools / Technologies |
|---|---|
| Programming language | C# |
| Backend framework | .NET 10 Minimal API |
| Database | MySQL |
| Database library | MySql.Data |
| Frontend | HTML, CSS, JavaScript |
| API style | REST |
| API testing | Postman, Thunder Client, and HTTP request files |
| Development environments | Visual Studio Code and JetBrains Rider |
| Version control | Git and GitHub |
| Project management | SCRUM, Kanban, user stories, and BDD/Gherkin |
| Design and planning | ER diagrams and wireframes |

## Main Features

- User registration and login with session handling.
- User and administrator functionality.
- Destination, city, country, hotel, room, activity, and amenity management.
- Ready-made package browsing and package search.
- Custom travel-card creation and management.
- Booking and traveler management.
- Linking packages and custom cards to destinations, hotels, rooms, activities, and amenities.
- Search endpoints for multiple resources.
- MySQL database initialization with tables, relationships, views, and seed data.

## What I Learned

### Backend Development

I learned how to structure and implement a backend with ASP.NET Core Minimal API, define HTTP routes, use appropriate HTTP verbs, and organize endpoint logic around application resources.

### Database Design

I strengthened my understanding of relational database design by creating normalized tables, primary keys, foreign keys, junction tables for many-to-many relationships, database views, and seed data. I also learned how database constraints affect the order in which tables and records must be created.

### API Design and Testing

I learned how to design consistent REST endpoints, support CRUD workflows, add search functionality, and test complete user journeys rather than testing isolated endpoints only.

### Authentication and Sessions

I gained practical experience with registration, login, logout, session state, and protecting user-specific functionality in an application.

### Agile Teamwork

Working in a SCRUM-based team taught me how to break requirements into user stories, describe behavior using BDD/Gherkin scenarios, plan work on a Kanban board, communicate progress, and share responsibility for delivery.

### Collaboration with Git and GitHub

I learned how to use feature branches, commit changes, merge completed work, review changes, and collaborate with a team through GitHub.

### Problem Solving

The project improved my ability to investigate integration problems involving API routes, database relationships, seed data, authentication, and frontend-backend communication.

## Repository

[View the Resbyra GitHub repository](https://github.com/FatimaAlMurtadha/Resbyra.git)

## Project Context

This project was created collaboratively by a five-person student team as part of an agile software development assignment in Malmö. It demonstrates practical experience with backend development, database-driven applications, API testing, software design, and team-based delivery.
