β οΈ Notice: This repository powers the live app at notelet.vercel.app.
Changes here may directly impact the deployed version.
Notelet is a full-stack note-taking application designed to create, update, and manage notes with rich text content.
It is lightweight yet powerful, built to demonstrate clean CRUD operations and secure user authentication.
- π Authentication with OTP (register & login using email verification)
- π Rich Text Notes (store formatted content as HTML)
- π CRUD Operations
- Create new notes
- Read individual notes by ID
- Update existing notes
- Delete notes securely
- π List API for fetching all notes of a logged-in user (newest first)
- π Token-based Authentication to secure note operations
- π¨ Email Utility for sending verification codes or notifications (requires SMTP credentials in
.env)
- Backend: Django + Django REST Framework (DRF)
- Frontend: Deployed on Vercel
- Database: PostgreSQL / SQLite (configurable)
- Auth: Djangoβs Token Authentication
-
Clone the repository:
git clone https://github.com/your-username/notelet.git cd notelet -
Create a virtual environment and install dependencies:
python -m venv env source env/bin/activate # (Linux/Mac) env\Scripts\activate # (Windows) pip install -r requirements.txt
-
Create a
.envfile in the project root and add required variables:SECRET_KEY = <some secret value> DEBUG = <True/False> ALLOWED_ORIGINS = <CORS allow origin> DATABASE_CONNECTION_STRING = <sql connecting string> OTP_LENGTH = 6 EMAIL_HOST = <smtp host> EMAIL_PORT = 587 EMAIL_HOST_USER = <sender email> EMAIL_HOST_PASSWORD = <sender email password>
-
Run migrations:
python manage.py migrate
-
Start the server:
python manage.py runserver
| Endpoint | Method | Auth Required | Description |
|---|---|---|---|
/auth/register |
POST | β | Register with email + OTP |
/auth/login |
POST | β | Login with email + password |
/notes/create |
POST | β | Create a new note |
/notes/read |
POST | β | Fetch a note by ID |
/notes/update |
POST | β | Update an existing note |
/notes/delete |
POST | β | Delete a note |
/notes/list |
GET | β | Fetch all notes of current user |
- The
contentfield stores notes in HTML (rich text) format. - The backend enforces that each user can only access their own notes.
- This repository is a backend + API reference for the live app hosted on Vercel.
Pull requests are welcome! For major changes, please open an issue first to discuss what youβd like to improve.
MIT Β© 2025 Notelet