This project provides a task management interface designed for desktop usage. It features task creation, real-time sorting by topic, status, and due date, dynamic overdue detection, task editing, and soft-deletion (archiving) with unarchiving capabilities.
Install all required production and development dependencies specified in `package.json`:
```bash
npm install
```
If you are setting up the project manually from a clean environment without `package-lock.json`, you can install the specific packages using the individual commands below:
No manual database setup or SQL server configuration is required.
- The application uses an embedded SQLite database stored locally in `todo.db`.
- When the application starts, `src/lib/db.ts` automatically initializes the `todo.db` database file and creates the required `tasks` table schema if it does not already exist.
### Step 5: Run Automated Unit Tests
To execute the automated unit test suite running against a throwaway in-memory SQLite database (`:memory:`), run the single test command below:
```bash
npm test
```
Expected output:
```text
✔ 1. Task Creation and Retrieval on throwaway in-memory SQLite database
✔ 3. Task Archiving (Soft-deletion) and Unarchiving Verification
ℹ pass 3
ℹ fail 0
```
### Step 6: Start the Development Server
Launch the Next.js local development server:
```bash
npm run dev
```
Expected terminal output:
```text
▲ Next.js 16.2.12 (Turbopack)
- Local: http://localhost:3000
```
### Step 7: Open the Application in Your Browser
Open your web browser and navigate to:
```text
http://localhost:3000
```
Note on Port Fallbacks:
If port 3000 is already in use on your machine, Next.js will automatically select the next available port (e.g. `http://localhost:3001`). You can also specify a custom port explicitly using:
AI assistance was utilized during this project for architectural explanations, troubleshooting SQLite schema initialization, and reviewing TSX component patterns. All code additions were executed under guided pair-programming workflows.