Doug’s Trucks is a personal, end-to-end web application I built as a learning project to deepen my experience with modern full-stack web development. This repository is not intended for production use—it’s a hands-on playground for exploring concepts, frameworks, and tools surrounding ASP.NET, PostgreSQL, authentication, REST APIs, and rich UI development.
- Gain experience integrating a relational database (PostgreSQL) with an ASP.NET web backend.
- Implement basic authentication/authorization flows.
- Build REST APIs for CRUD operations.
- Experiment with front‑end development using HTML, Less (CSS preprocessor), JavaScript, and C# (via Razor/Blazor).
- Practice project structuring, deployment basics, and version control with GitHub.
- Inventory listing of trucks/cars with create, read, update, and delete (CRUD) operations.
- User authentication (register, login, logout).
- Simple account management (change password, user roles, etc.).
- Dealer “dashboard” to manage listings.
- Clean, mobile‑responsive UI.
- RESTful API endpoints (private and public).
- Basic input validation and error handling.
The project is a blend of several technologies, each chosen to maximize learning. Here’s a breakdown of what I used and why:
ASP.NET (C#)
- Purpose: Main server-side framework for routing, controller logic, API endpoints, and Razor views.
- Learning Points: MVC structure, model binding, middleware (authentication, authorization), dependency injection, deployment basics (IIS, Kestrel).
PostgreSQL
- Purpose: Open-source SQL database for persistent storage (inventory, users, etc.).
- Learning Points: Schema design, table relationships, querying with SQL and EF Core, connection pooling.
Entity Framework Core
- Purpose: Object-relational mapping (ORM) for working with PostgreSQL in C# using LINQ.
- Learning Points: Code-first migrations, DbContext configuration, lazy vs. eager loading.
HTML
- Purpose: Page structure, semantic markup.
- Learning Points: Good HTML structure for accessibility and maintainability.
Less (CSS Preprocessor)
- Purpose: Write maintainable, nested stylesheets with variables/functions.
- Learning Points: Modular CSS development, compiling Less to CSS.
JavaScript
- Purpose: Add client-side interactivity (e.g., dynamic form validation, UI enhancements).
- Learning Points: Vanilla JS basics, manipulating DOM, fetching API data with
fetch.
C# in Razor/Blazor
- Purpose: Mix server-side logic with HTML markup, render dynamic content.
- Learning Points: Data binding, componentization, conditional rendering.
- Visual Studio: IDEs used for coding, debugging, refactoring.
- Swagger: Test API endpoints quickly during development.
- pgAdmin: Tools for managing the PostgreSQL database.
Note: This project is for educational & demo purposes only and may require additional setup or config tweaks one of them being you will have to create your own db with the exact same schema as mine and also fill it with data.
Prerequisites:
- .NET SDK (tested with .NET 7+)
- PostgreSQL
This project pushed me to:
- Debug common integration issues between C#, Entity Framework, and PostgreSQL.
- Build a basic authentication system from scratch and see how managed identity frameworks work.
- Go beyond scaffolding by customizing controllers, APIs, and client-side behaviors.
- Manage application state both on the server (C#) and client (JavaScript).
This repo is NOT intended for use by real dealerships or in production environments! It was created for experimentation, learning, and self-improvement. Please read and review all code before adapting any parts for your own use. No warranties, no guarantees!
Happy coding!
— @TristinPorter



