Skip to content

Fringe Festival API implementation using .NET 8 Web API and deployed on App Services. Note: This project was developed on Azure DevOps (Repositories & CI/CD) and migrated to GitHub.

Notifications You must be signed in to change notification settings

ndavidb/FringeBackend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎪 Fringe Festival Backend API

RESTful API backend for Australia's largest arts festival management platform

Frontend App .NET License

Swagger API Documentation

🎯 Project Overview

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.

Cloud Architecture overview

Cloud Architecture

Admin Dashboard

Admin Panel Complete event management interface with real-time booking analytics

🚀 Key Features

  • 🔐 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

🏗️ Architecture Overview

Cloud Architecture

Clean Architecture: Separation of concerns with clearly defined layers for maintainability and testability.

💻 Tech Stack

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

📐 Project Structure

  ├───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

🚀 Getting Started

Prerequisites

  • .NET 8 SDK
  • SQL Server (local or Azure)
  • Visual Studio 2022 or VS Code

Installation & Setup

  1. Clone the repository
    git clone https://github.com/ndavidb/FringeBackend.git
    cd FringeBackend
  2. 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
      }
    }
  3. Run migrations
     dotnet ef database update --project FringeDomain/FringeDomain.csproj --startup-project FringeApi/FringeApi.csproj
  4. Run the application
    dotnet run --project FringeApi/FringeApi.csproj
  5. Access Swagger UI Open your browser and navigate to http://localhost:5000/swagger to explore the API documentation.

📈 Performance Considerations

  • Entity Framework Query Optimization

    • Use AsNoTracking() for read-only queries
    • Implement pagination for large datasets
    • Use projection to select only required fields
  • 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

🔐 Security Implementation

  • 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

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

📞 Contact

David Bello - Full Stack Developer


Built with ❤️ for the arts community in Adelaide, South Australia

View Frontend Repository

About

Fringe Festival API implementation using .NET 8 Web API and deployed on App Services. Note: This project was developed on Azure DevOps (Repositories & CI/CD) and migrated to GitHub.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published