# MowLog Project TODO List This file tracks the development progress, completed features, and future ideas for the MowLog application. ## ✅ Completed Features - [x] **Initial Project Setup (ASP.NET Core MVC)** - [x] Created project using the MVC template. - [x] Configured for development on Fedora Linux with JetBrains Rider. - [x] **Data Modeling & Database** - [x] Created `LawnCareEvent` model with `MowingPattern` and `EventType` enums. - [x] Set up Entity Framework Core. - [x] Configured the project to use a SQLite database. - [x] Created and applied initial database migration. - [x] **Core CRUD Functionality** - [x] Scaffolded the `LawnCareEventsController` with all views (Create, Read, Update, Delete). - [x] Ensured all CRUD views (`Index`, `Create`, `Edit`, `Delete`, `Details`) are present and working. - [x] **Tier 1 Enhancements (UX/UI)** - [ ] Added JavaScript to conditionally show/hide the "Mowing Pattern" field. - [x] Set the "Create" form's date field to default to the current day. - [x] Customized the site's CSS to create a green, themed navigation bar. - [x] **Tier 2 Features (Dashboard & Logging)** - [x] Created a `DashboardViewModel`. - [x] Implemented a dynamic dashboard on the homepage showing last activity dates and the next mowing pattern. - [x] Added sorting and filtering capabilities to the main "Mow Log" index page. - [x] **Project Management & Documentation** - [x] Initialized a Git repository. - [x] Created a GitLab repository and pushed the project. - [x] Wrote a comprehensive `README.md` file. - [x] Added a `.gitignore` file tailored for .NET projects. - [x] Included an MIT `LICENSE` file. ## 🎯 Next Up - [ ] **Feature: Lawn Care Tips Section** - [ ] Create `LawnCareTip` model (`Id`, `Title`, `Category`, `Content`). - [ ] Add `DbSet` to `ApplicationDbContext`. - [ ] Create and apply a new database migration. - [ ] Scaffold the `LawnCareTipsController` with views. - [ ] Add a "Tips" link to the main navigation bar. ## 🚀 Future Ideas & Enhancements - [ ] **Feature: Calendar View** - Integrate a client-side JavaScript library (like FullCalendar) to display events visually. - Create a JSON endpoint in the controller to serve event data to the calendar. - [ ] **Feature: Enhance Data Model** - Add more specific, nullable fields to the `LawnCareEvent` model (e.g., `WaterAmountInches`, `FertilizerType`, `MowerHeightInches`). - Update forms to include these new fields, using conditional logic where appropriate. - [ ] **Architecture: Refactor to a Service Layer** - Create an `ILawnCareService` interface and `LawnCareService` class. - Move all database query logic from controllers into the service layer to improve separation of concerns. - [ ] **Feature: User Authentication** - Integrate ASP.NET Core Identity to allow users to register and log in. - Associate lawn care events with a specific user ID so each user only sees their own data. - [ ] **Deployment: Containerize with Docker** - Add a `Dockerfile` to the project to create a portable container image of the application.