Skip to content

Repository files navigation

La Alliance

.NET ASP.NET Core MySQL License: MIT

La Alliance is a full-stack food ordering and restaurant management system built with ASP.NET Core MVC. It gives customers a streamlined way to discover food, customize orders, and follow their progress while giving restaurant teams the tools to manage menus, promotions, staff, and fulfillment from one application.

This project was developed for Alliance Software Inc.'s Jumpstart Training Program, a project-based program that introduces graduating computing students to Alliance development processes and standards.

Features

Customer experience

  • Browse products by category, view item options, and save favorites.
  • Manage a cart, apply promotion codes, and choose delivery or pickup.
  • Place, cancel, and reorder orders, with receipts and order history.
  • Receive real-time order status updates through SignalR.
  • Manage profile details, delivery addresses, email, and password.
  • Register securely with email verification and OTP-based recovery flows.

Restaurant operations

  • Monitor sales, order activity, popular products, and customer favorites from an analytics dashboard.
  • Create and maintain products, categories, options, images, and availability.
  • Recover recently deleted menu items or remove them permanently.
  • Create promotions, banners, discounts, and reusable promotion codes.
  • Accept, reject, prepare, and complete incoming orders in real time.
  • Manage restaurant details and role-based staff accounts.

Platform capabilities

  • Role-based access for customers, restaurant administrators, and staff.
  • JWT-backed authentication with secure application cookies.
  • MySQL persistence through Entity Framework Core and repository/service layers.
  • Azure Blob Storage for product and promotion media.
  • SMTP email delivery for verification and account recovery.
  • Google Maps integration for location and delivery experiences.

Technology stack

Layer Technologies
Application C#, .NET 9, ASP.NET Core MVC, Razor views
Data Entity Framework Core 9, Pomelo MySQL provider, MySQL 8
Real-time ASP.NET Core SignalR
Authentication JWT bearer tokens, cookie authentication, BCrypt
Storage and services Azure Blob Storage, SMTP, Google Maps API
UI Razor, JavaScript, Tailwind CSS, Bootstrap, jQuery
Observability Microsoft logging, Serilog, Seq

Project structure

la-alliance/
|-- ASI.Basecode.Data/       # EF Core context, entities, migrations, and repositories
|-- ASI.Basecode.Resources/  # Shared constants, enums, and resources
|-- ASI.Basecode.Services/   # Business logic, service models, and SignalR hubs
|-- ASI.Basecode.WebApp/     # MVC controllers, Razor views, configuration, and static assets
|-- LaAlliance.sln
`-- README.md

The solution follows a layered architecture: the web application handles HTTP and presentation concerns, services contain business rules, and the data project owns persistence.

Getting started

Prerequisites

  • .NET 9 SDK
  • MySQL 8.0 or a compatible hosted MySQL database
  • An Azure Storage account and blob container access
  • SMTP credentials for transactional email
  • A Google Maps API key
  • Optional: Visual Studio 2022 or JetBrains Rider

1. Clone the repository

git clone https://github.com/nathanaellarida/la-alliance.git
cd la-alliance

2. Create the local configuration

Copy the provided template. The generated appsettings.json is ignored by Git and must remain local.

PowerShell:

Copy-Item ASI.Basecode.WebApp/appsettings.example.json ASI.Basecode.WebApp/appsettings.json

Bash:

cp ASI.Basecode.WebApp/appsettings.example.json ASI.Basecode.WebApp/appsettings.json

Update the copied file with your environment's values:

Setting Purpose
Common:SetupRoot Writable local directory used by the application
ConnectionStrings:DefaultConnection MySQL connection string
ConnectionStrings:AzureBlobStorage Azure Storage connection string
TokenAuthentication:SecretKey Strong, private signing key for authentication tokens
Email SMTP host, port, credentials, and sender identity
GoogleMaps:ApiKey Google Maps API key

Important

Never commit credentials or a populated appsettings.json. Use a unique, high-entropy token signing key and development-only service credentials when running locally.

3. Restore and build

dotnet restore LaAlliance.sln
dotnet build LaAlliance.sln

4. Apply the database migrations

Install the EF Core CLI if it is not already available:

dotnet tool install --global dotnet-ef --version "9.*"

Run the migrations from the web application directory so it can load the local configuration:

cd ASI.Basecode.WebApp
dotnet ef database update --project ../ASI.Basecode.Data --startup-project .

5. Run the application

From ASI.Basecode.WebApp:

dotnet run

Open the HTTPS or HTTP address printed in the terminal. The application will redirect users to the appropriate customer or restaurant experience after authentication.

Development notes

  • EF Core migrations live in ASI.Basecode.Data/Migrations.
  • The SignalR order hub is exposed at /orderHub.
  • Uploaded product media is stored in the Azure Blob Storage container named products.
  • Local data-protection keys are written to ASI.Basecode.WebApp/DataProtection-Keys and are excluded from version control.
  • Build outputs, user-specific IDE files, and local configuration are ignored by Git.

Contributing

  1. Fork the repository and create a focused feature branch.
  2. Make the change and confirm the solution builds successfully.
  3. Commit with a clear message and push the branch.
  4. Open a pull request describing the change and how it was verified.

License

This project is available under the MIT License.

Acknowledgment

La Alliance was created as a training project for Alliance Software Inc.'s Jumpstart Training Program. It is an educational project and is not presented as an official Alliance Software product.

About

Full-stack food ordering and restaurant management system built with ASP.NET Core MVC for Alliance Software Inc.'s Jumpstart Training Program.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages