No description
Find a file
Blake Ridgway b24beb3154 feat: Integrate ASP.NET Core Identity for user authentication
This commit integrates ASP.NET Core Identity into the application to enable user registration, login, and management. This lays the groundwork for securing data per user.

**Key Changes:**

*   **DbContext Configuration:**
    *   Modified `ApplicationDbContext.cs` to inherit from `IdentityDbContext<IdentityUser>`.
    *   Removed an unnecessary `using` statement from `ApplicationDbContext.cs`.

*   **Program.cs Setup:**
    *   Configured `AddDefaultIdentity<IdentityUser>` with `AddEntityFrameworkStores<ApplicationDbContext>()` to register Identity services.
    *   Ensured correct ordering of `UseAuthentication()` and `UseAuthorization()` middleware.
    *   Added `app.MapRazorPages()` to enable the Identity UI pages.
    *   Verified core package versions in `turf_tasker.csproj` for consistency across EF Core and Identity components (`8.0.6`).

*   **Identity UI:**
    *   Scaffolded ASP.NET Core Identity pages (Login, Register, Manage, etc.) to provide the user interface for authentication.
    *   Added a `_LoginPartial.cshtml` partial view to the `Views/Shared` folder.
    *   Rendered `_LoginPartial` in `Views/Shared/_Layout.cshtml` to display login/register/logout links in the navigation bar.

*   **Migrations:**
    *   Created and applied a new migration (`AddIdentitySchema`) to create the necessary ASP.NET Core Identity database tables (e.g., `AspNetUsers`, `AspNetRoles`).
2025-06-21 18:10:25 -05:00
Areas/Identity/Pages feat: Integrate ASP.NET Core Identity for user authentication 2025-06-21 18:10:25 -05:00
Controllers feat: Enhance UI/UX across multiple views with consistent styling and improved layout 2025-06-21 16:30:59 -05:00
Data feat: Integrate ASP.NET Core Identity for user authentication 2025-06-21 18:10:25 -05:00
Migrations feat: Integrate ASP.NET Core Identity for user authentication 2025-06-21 18:10:25 -05:00
Models feat: Enhance UI/UX across multiple views with consistent styling and improved layout 2025-06-21 16:30:59 -05:00
Properties Init commit 2025-06-17 13:22:51 -05:00
Views feat: Integrate ASP.NET Core Identity for user authentication 2025-06-21 18:10:25 -05:00
wwwroot feat: Enhance UI/UX across multiple views with consistent styling and improved layout 2025-06-21 16:30:59 -05:00
.gitignore Init commit 2025-06-17 13:21:46 -05:00
appsettings.json ci: Containerization of the app 2025-06-18 16:32:36 -05:00
auth.txt feat: Integrate ASP.NET Core Identity for user authentication 2025-06-21 18:10:25 -05:00
Dockerfile ci: Containerization of the app 2025-06-18 16:32:36 -05:00
Program.cs feat: Integrate ASP.NET Core Identity for user authentication 2025-06-21 18:10:25 -05:00
README.md ci: Containerization of the app 2025-06-18 16:32:36 -05:00
TODO.md Init commit 2025-06-17 13:21:46 -05:00
turf_tasker.csproj feat: Integrate ASP.NET Core Identity for user authentication 2025-06-21 18:10:25 -05:00
turf_tasker.sln Init commit 2025-06-17 13:22:51 -05:00

Turf Tasker

A simple but powerful ASP.NET Core MVC application designed to track lawn care activities. This project serves as a hands-on learning exercise to explore and master the fundamentals of the ASP.NET Core MVC framework, from data modeling with Entity Framework Core to building dynamic, data-driven views.

Key Features

  • Log lawn care events (Mowing, Watering, Fertilizing, etc.).
  • Track mowing patterns to ensure a healthy lawn and prevent ruts.
  • Dashboard homepage showing the last time key activities were performed and what the next mowing pattern should be.
  • A dedicated section for general lawn care tips.
  • A filterable and sortable log of all past activities.
  • Clean, responsive UI using Bootstrap.

Tech Stack

  • Backend: C#, ASP.NET Core 8 MVC
  • Database: Entity Framework Core 8 with SQLite
  • Frontend: HTML, CSS, Bootstrap 5, JavaScript (with jQuery)
  • Development Environment: JetBrains Rider on Fedora Linux
  • Version Control: Git with GitLab
  • Containerization: Docker

How to Run

You can run this application either directly using the .NET SDK or via Docker.

Option 1: Run Natively (using .NET SDK)

  1. Clone the repository:
    git clone https://gitlab.com/blakeridgway/turf-tasker.git
    
  2. Navigate to the project directory:
    cd turf-tasker 
    
    (If your turf_tasker.csproj is directly in the cloned turf_tasker folder, you might skip this cd.)
  3. Ensure .NET 8 SDK is installed:
    dotnet --version
    
    (Should show 8.x.x)
  4. Restore dependencies:
    dotnet restore
    
  5. Create/Update the database:
    dotnet ef database update
    
    This will create the turf_tasker.db SQLite file and seed initial data.
  6. Run the application:
    dotnet run
    
  7. Access in browser: Your application will typically run on https://localhost:5062 or a similar port, which will be displayed in the terminal output.

Option 2: Run with Docker

  1. Ensure Docker is installed and running on your system.
  2. Clone the repository (if you haven't already):
    git clone https://gitlab.com/blakeridgway/turf-tasker.git
    
  3. Navigate to the project directory:
    cd turf_tasker 
    
  4. Build the Docker image:
    docker build -t turf-tasker-app .
    
    This command builds the image and tags it as turf-tasker-app.
  5. Run the Docker container:
    docker run -e "ASPNETCORE_URLS=http://+:80" -p 8080:80 turf-tasker-app
    
    • -e "ASPNETCORE_URLS=http://+:80" explicitly configures the app to listen on HTTP port 80 inside the container.
    • -p 8080:80 maps port 8080 on your host machine to port 80 inside the container.
  6. Access in browser:
    http://localhost:8080