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.
- 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.
- 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.
- 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.
| 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 |
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.
- .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
git clone https://github.com/nathanaellarida/la-alliance.git
cd la-allianceCopy 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.jsonBash:
cp ASI.Basecode.WebApp/appsettings.example.json ASI.Basecode.WebApp/appsettings.jsonUpdate 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.
dotnet restore LaAlliance.sln
dotnet build LaAlliance.slnInstall 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 .From ASI.Basecode.WebApp:
dotnet runOpen the HTTPS or HTTP address printed in the terminal. The application will redirect users to the appropriate customer or restaurant experience after authentication.
- 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-Keysand are excluded from version control. - Build outputs, user-specific IDE files, and local configuration are ignored by Git.
- Fork the repository and create a focused feature branch.
- Make the change and confirm the solution builds successfully.
- Commit with a clear message and push the branch.
- Open a pull request describing the change and how it was verified.
This project is available under the MIT License.
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.