RESTful API backend for Australia's largest arts festival management platform
A robust REST API built with .NET 8 and Entity Framework Core to manage festival events, bookings, and venues. Designed to integrate seamlessly with a React/Next.js frontend, providing a complete solution for festival management.
Complete event management interface with real-time booking analytics
- 🔐 JWT Authentication - Secure token-based authentication
- 🎭 Event Management - Complete CRUD operations for festival events
- 🎫 Booking System - Handle ticket bookings and availability
- 🏛️ Venue Management - Manage multiple festival venues
- 👥 User Management - Role-based access control (Admin/Customer)
- 📊 RESTful API - Clean, consistent API design
Clean Architecture: Separation of concerns with clearly defined layers for maintainability and testability.
Category | Technologies |
---|---|
Framework | .NET 8 • C# 12 • ASP.NET Core |
Data Access | Entity Framework Core 8 |
Database | SQL Server |
API Documentation | Swagger/OpenAPI • Swashbuckle |
Authentication | JWT Bearer Tokens |
Cloud | Azure App Service • Azure SQL Database |
Testing | NUnit • MOQ |
├───Fringe.API
│ ├───Controllers
│ └───Properties
├───Fringe.DB
│ ├───dbo
│ │ └───Tables
├───Fringe.Domain
│ ├───Configurations
│ ├───DTOs
│ │ ├───AuthDTOs
│ │ ├───Booking
│ │ ├───LocationDTOs
│ │ ├───PerformanceDTOs
│ │ ├───ShowDTOs
│ │ ├───TicketDTO
│ │ ├───TicketPriceDTOs
│ │ ├───TicketTypeDTOs
│ │ └───VenueDTOs
│ ├───Entities
│ ├───Enum
│ ├───Extensions
│ ├───Migrations
│ ├───Models
│ └───Seeders
├───Fringe.Repository
│ ├───Repositories
│ ├───Interfaces
├───Fringe.Service
│ ├───Services
│ ├───Interfaces
└───Fringe.Tests
├───Repositories
├───Controllers
├───Services
- .NET 8 SDK
- SQL Server (local or Azure)
- Visual Studio 2022 or VS Code
- Clone the repository
git clone https://github.com/ndavidb/FringeBackend.git cd FringeBackend
- Configure database connection
{ "ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=FringeDB;Trusted_Connection=True;MultipleActiveResultSets=true" }, "JwtSettings": { "Secret": "your-secret-key-at-least-32-characters-long", "Issuer": "FringeAPI", "Audience": "FringeClient", "ExpirationInMinutes": 60 } }
- Run migrations
dotnet ef database update --project FringeDomain/FringeDomain.csproj --startup-project FringeApi/FringeApi.csproj
- Run the application
dotnet run --project FringeApi/FringeApi.csproj
- Access Swagger UI
Open your browser and navigate to
http://localhost:5000/swagger
to explore the API documentation.
-
Entity Framework Query Optimization
- Use
AsNoTracking()
for read-only queries - Implement pagination for large datasets
- Use projection to select only required fields
- Use
-
Caching Strategy
- Response caching for static data
- In-memory caching for frequently accessed data
-
Database Performance
- Proper indexing on frequently queried columns
- Stored procedures for complex operations
-
Authentication & Authorization
- JWT Bearer token authentication
- Role-based authorization (Admin, User)
- Token expiration and refresh mechanism
-
Data Protection
- Input validation on all endpoints
- SQL injection prevention via Entity Framework
- HTTPS enforcement
This project is licensed under the MIT License - see the LICENSE file for details.
David Bello - Full Stack Developer
- 📧 Email: david.bello2996@gmail.com
- 💼 LinkedIn: linkedin.com/in/ndavidbello
- 🐙 GitHub: @ndavidb
Built with ❤️ for the arts community in Adelaide, South Australia