Skip to content

Kalitch/notes-app-fullstack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Notes Taking App

A Google Keep–inspired notes application built with Django and React, focused on design fidelity, thoughtful UX, and clean full-stack architecture.


🎯 Project Goals

  • Match the provided Figma design as closely as possible
  • Deliver all required functionality within a 72-hour constraint
  • Demonstrate senior-level tradeoff analysis, code quality, and UX thinking
  • Use AI tools responsibly to accelerate (not replace) engineering judgment

🎨 Design Fidelity

The UI closely matches the provided Figma specifications:

  • Category-based sidebar with color-coded indicators
  • Card-based notes grouped by date (Today / Yesterday / Earlier)
  • Full-screen note editor
  • Minimal, distraction-free layout
  • Typography and spacing aligned with design tokens

🏗️ Architecture Overview

Backend — Django + Django REST Framework

  • Framework: Django (REST API with DRF)
  • Database: SQLite (development), PostgreSQL-ready
  • Auth: JWT (SimpleJWT)
  • Data Model: Category, Note, NoteVersion
  • API Style: RESTful, user-scoped, category-filterable

Frontend — React + Vite

  • Framework: React 18 (Vite)
  • Styling: Tailwind CSS with custom tokens
  • Routing: React Router v6
  • State: React hooks + context (no global state library)
  • Networking: Axios with token refresh handling

React was chosen to maximize delivery speed and clarity within the time limit. Migration to Next.js would be largely structural and straightforward.


🚀 Quick Start

Option A: Docker (recommended)

docker compose up --build
  • Backend: http://localhost:8000
  • Frontend: http://localhost:5173

The database is persisted in a Docker volume. Run docker compose down -v to remove volumes and reset data.

Option B: Local development

Backend

cd backend/notes_project
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -r ../requirements.txt
python manage.py migrate
python manage.py seed_categories
python manage.py runserver

Backend: http://localhost:8000

Frontend

cd frontend
npm install
npm run dev

Frontend: http://localhost:5173


✨ Features

Core

  • User authentication (signup / login)
  • Create, edit, delete notes
  • Fixed categories with filtering
  • Autosave with debounce (500ms)
  • Date-based note grouping
  • Empty states and responsive layout

Bonus

  • Version History (last 5 versions per note, read-only)
  • Restore Version (one-click rollback)
  • Keyboard Shortcut (N to create note)

🧠 Key Design Decisions

Autosave

  • Why: Prevents data loss and improves UX
  • How: Debounced PATCH requests (500ms)
  • Tradeoff: Slight save delay, reduced network noise

Version History

  • Why: Safety net for editing mistakes
  • How: Snapshot stored on each save, capped at 5
  • Tradeoff: Storage overhead vs. simplicity

Fixed Categories

  • Why: Matches Figma exactly and simplifies UX
  • Tradeoff: Less flexibility, but clearer scope

State Management

  • Why: App complexity doesn’t justify Redux
  • Benefit: Easier reasoning and review

🤖 AI Usage & Validation

AI tools (Claude and Cursor) were used as productivity accelerators—similar to advanced IDE features or pair programming.

They were used to:

  • Scaffold boilerplate and repetitive patterns
  • Brainstorm UX enhancements and optional features
  • Validate architectural approaches and edge cases
  • Suggest refactors and naming improvements

All AI-generated output was:

  • Reviewed line-by-line
  • Adapted to project-specific constraints
  • Tested locally before commit
  • Rejected when it didn’t meet quality or clarity standards

All final decisions, tradeoffs, and implementations were made manually.


📁 Project Structure

backend/
  notes_project/
    notes_api/
      models.py
      serializers.py
      views.py
      urls.py
frontend/
  src/
    components/
    pages/
    services/
    utils/
    context/

Structure evolved slightly as features were added, while maintaining clear separation of concerns.


🔒 Security Notes

  • JWT-based auth
  • ORM-level SQL injection protection
  • Password validation enforced
  • CORS configured for development

🔮 Future Improvements

  • Full-text search
  • Rich-text / Markdown editor
  • Offline support
  • Pagination and virtualization
  • Automated testing (unit + E2E)

Screenshot 2026-02-26 at 10-52-06 Notes App Screenshot 2026-02-26 at 10-52-18 Notes App Screenshot 2026-02-26 at 10-53-04 Notes App Screenshot 2026-02-26 at 10-53-13 Notes App Screenshot 2026-02-26 at 10-53-31 Notes App Screenshot 2026-02-26 at 10-53-44 Notes App

Built with attention to UX, maintainability, and delivery under constraints.

About

A full-stack notes application built with Django and React, focused on design fidelity, autosave, version history, and clean architecture.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors