Skip to content

A full-stack Notes App with user authentication, Markdown support, and persistent storage, built using React, Tailwind, ShadCN, FastAPI, SQLite, and Clerk.

Notifications You must be signed in to change notification settings

tonybnya/notabene

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 

Repository files navigation

Notabene 📓

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.


Features 🚀

  • 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.

Tech Stack 🛠️

Front-End

  • 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.

Back-End

  • FastAPI - High-performance web framework for Python.
  • SQLite - Lightweight relational database.

Authentication

  • Clerk - Authentication and user management.

Getting Started 🏁

Follow these instructions to set up and run the Notes App locally.

Prerequisites

  • Node.js (v18+)
  • Python (v3.10+)
  • SQLite installed

Back-End Setup

  1. Clone the repository:

    git clone https://github.com/tonybnya/notabene.git
    cd notabene/backend
  2. Create and activate a virtual environment:

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
  3. Install dependencies:

    pip install fastapi uvicorn sqlalchemy sqlite-markdown
  4. Create the database:

    python -c "from database import create_tables; create_tables()"
  5. Run the FastAPI server:

    uvicorn main:app --reload

The server will be available at http://localhost:8000.

Front-End Setup

  1. Navigate to the front-end folder:

    cd ../frontend
  2. Install dependencies:

    npm install
  3. Configure Clerk:

    • Sign up on Clerk.
    • Add your API keys to the Clerk configuration file.
  4. Start the development server:

    npm run dev

The app will be available at http://localhost:5173.

API Endpoints 🌐

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

Contributing 🤝

Contributions are welcome! If you’d like to improve this project:

  1. Fork the repository.
  2. Create a feature branch: git checkout -b feature-name.
  3. Commit your changes: git commit -m 'Add some feature'.
  4. Push to the branch: git push origin feature-name.
  5. Submit a pull request.

About

A full-stack Notes App with user authentication, Markdown support, and persistent storage, built using React, Tailwind, ShadCN, FastAPI, SQLite, and Clerk.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published