A full-stack web application built using NestJS (backend) and Vue.js (frontend). The project includes CRUD operations for notes with features like tagging, archiving, and filtering.
Ensure the following are installed on your system:
-
Node.js: Version 18.17 or higher.
-
npm: Version 9 or higher.
-
SQLite:
SQLite is used as the database engine for this project. It is lightweight and should work out of the box. -
Bash Shell:
The provided script is written for Linux/macOS environments. For Windows, use Git Bash or WSL.
project-root/
├── backend/ # NestJS backend application
├── frontend/ # Vue.js frontend application
├── run.sh # Bash script to set up and run the app
└── README.md # Project documentation
To start the application, follow these steps:
-
Clone the repository and navigate to the project root directory.
-
Ensure the
run.shscript is executable:chmod +x run.sh
-
Run the app:
./run.sh
The run.sh script handles the following:
-
Backend Setup:
- Installs dependencies using
npm install. - Runs database migrations to set up the SQLite schema.
- Starts the NestJS development server on
http://localhost:3000.
- Installs dependencies using
-
Frontend Setup:
- Installs dependencies using
npm install. - Starts the Vue.js development server on
http://localhost:5173.
- Installs dependencies using
-
Parallel Execution:
- Both the backend and frontend run in the background.
- The script monitors for termination signals to gracefully stop the servers.
-
Confirmation and Cleanup:
- If the script is stopped (
Ctrl+C), it automatically stops the backend and frontend servers.
- If the script is stopped (
- Base URL:
http://localhost:3000 - API Endpoints:
GET /notes: Fetch all notes with optional filters.POST /notes: Create a new note.PATCH /notes/:id: Update an existing note.DELETE /notes/:id: Delete a note.PATCH /notes/:id/tags: Update tags for a note.PATCH /notes/:id/archive: Archive a note.PATCH /notes/:id/unarchive: Unarchive a note.
- Base URL:
http://localhost:5173 - Features:
- View, create, edit, and delete notes.
- Tag management with add/delete capabilities.
- Filter notes by tag or archive status.
- Responsive user interface.
- Engine: SQLite
- Setup: The database is automatically initialized when the backend starts, using TypeORM's migration system.