A full-stack Notes App that allows users to create, edit, delete, and manage their notes with Markdown support and persistent storage. Built using React, Tailwind CSS, ShadCN UI, FastAPI, SQLite, and Clerk for authentication.
- User Authentication: Secure login/signup using Clerk.
- Create Notes: Write notes in Markdown format.
- Edit Notes: Modify and update existing notes.
- Delete Notes: Remove unwanted notes.
- Markdown to HTML Conversion: Automatically convert Markdown to HTML on save.
- Persistent Storage: Notes are saved in a database and retrieved even after closing the browser.
- Timestamps: View the creation date of each note.
- React - JavaScript library for building user interfaces.
- Tailwind CSS - Utility-first CSS framework.
- ShadCN UI - Component library for enhanced UI design.
- React Markdown - Markdown rendering in React.
- Clerk - Authentication and user management.
Follow these instructions to set up and run the Notes App locally.
- Node.js (v18+)
- Python (v3.10+)
- SQLite installed
-
Clone the repository:
git clone https://github.com/tonybnya/notabene.git cd notabene/backend
-
Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install fastapi uvicorn sqlalchemy sqlite-markdown
-
Create the database:
python -c "from database import create_tables; create_tables()"
-
Run the FastAPI server:
uvicorn main:app --reload
The server will be available at http://localhost:8000
.
-
Navigate to the front-end folder:
cd ../frontend
-
Install dependencies:
npm install
-
Configure Clerk:
- Sign up on Clerk.
- Add your API keys to the Clerk configuration file.
-
Start the development server:
npm run dev
The app will be available at http://localhost:5173
.
Base URL: http://localhost:8000
Method | Endpoint | Description |
---|---|---|
POST | /notes/ |
Create a new note |
GET | /notes/ |
Get all the notes |
GET | /notes/{id} |
Get a specific note |
PUT | /notes/{id} |
Update a note |
DELETE | /notes/{id} |
Delete a note |
Contributions are welcome! If you’d like to improve this project:
- Fork the repository.
- Create a feature branch:
git checkout -b feature-name
. - Commit your changes:
git commit -m 'Add some feature'
. - Push to the branch:
git push origin feature-name
. - Submit a pull request.