Skip to content

cjbpq/ai_note_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

107 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SnapNote AI Note App

SnapNote is an AI-assisted note taking application. It combines a mobile frontend with a FastAPI backend so users can upload note images, generate structured AI notes, browse categories, search locally, and keep note data available in the app.

The project is currently in active MVP development.

Features

  • Image-to-note workflow powered by the backend AI pipeline
  • Multi-image upload and background processing jobs
  • User authentication and account management
  • Note browsing, editing, favorite status, categories, and search
  • Incremental sync and offline mutation replay support
  • Expo React Native mobile app with local cache/storage
  • Backend tests for auth, upload jobs, sync, security, and AI pipeline behavior

Repository Structure

backend/     FastAPI API, SQLAlchemy models, services, Alembic migrations, tests
frontend/    Expo React Native app, screens, components, hooks, stores, services

Tech Stack

Backend:

  • FastAPI
  • SQLAlchemy
  • Pydantic v2
  • PostgreSQL or SQLite for local testing
  • Uvicorn
  • Volcengine Ark/Doubao SDK
  • Pytest

Frontend:

  • Expo
  • React Native
  • TypeScript
  • Expo Router
  • Zustand
  • TanStack Query
  • React Native Paper
  • SQLite and AsyncStorage

Backend Setup

For day-to-day backend work, use a local virtual environment and a local PostgreSQL database. If Docker is installed, the repository includes a small Postgres compose file:

cd backend
docker compose -f docker-compose.dev.yml up -d
cd backend
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install --upgrade pip
.\.venv\Scripts\python.exe -m pip install -r requirements.txt -r requirements-test.txt
copy .env.example .env

Edit backend/.env with your local settings. At minimum, set a 32+ character SECRET_KEY, a DATABASE_URL, and an UPLOAD_DIR outside the backend project directory.

Apply database migrations before starting the API:

cd backend
.\.venv\Scripts\python.exe -m alembic upgrade head

Run the API:

cd backend
.\start.bat

Or run directly:

cd backend
.\.venv\Scripts\python.exe -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

Run backend tests:

cd backend
.\.venv\Scripts\python.exe -m pytest

Frontend Setup

cd frontend
npm install
copy .env.example .env
npm run start

Set EXPO_PUBLIC_API_URL in frontend/.env to your backend API URL, for example:

EXPO_PUBLIC_API_URL=http://localhost:8000/api/v1
EXPO_PUBLIC_USE_MOCK=false

Environment Files

Real .env files are intentionally ignored by Git. Use:

  • backend/.env.example for backend configuration reference
  • frontend/.env.example for frontend configuration reference

Do not commit real API keys, database files, logs, virtual environments, local AI tool state, or generated coverage/benchmark output.

License

This project is licensed under the MIT License. See LICENSE for details.

About

An AI-assisted app. Users can upload note images or dialogue with AI to generate structured AI notes and reuse your own notes.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors