A modern note-taking application built with SvelteKit, TailwindCSS, and TipTap, featuring a SQLite database for storage.
Feel free to update this README as we add new features!!
- Rich text editing with TipTap
- File tree navigation
- Database storage with SQLite
- Responsive design with TailwindCSS
- Markdown compatibility
- Headings (H1, H2)
- Lists (Bullet lists, Ordered lists)
- Bold/Italic formatting
- Task lists and checkboxes
- Code blocks with syntax highlighting
- Horizontal rules
- Paragraph formatting
- Text alignment options
- Left alignment
- Center alignment
- Right alignment
- Justify alignment
- Inline mathquill latex
- WYSIWYG latex editor
- Support for mathematical symbols (pi, theta, etc.)
- Functions like sqrt, sum, int, choose
- Space behaves like tab for quick formula input
- Syntax highlighted code blocks (lowlight)
- Tab support within code blocks
- Multiple language support via highlight.js
- Image support
- Drag and drop image insertion
- Paste images from clipboard
- File upload via button
- Automatic image uploading
- Base64 image encoding
- Document history
- Undo/Redo functionality
- Auto-saving with status indicators
- Create new notes
- Rename notes
- Delete notes
- Context menus for file operations
- Node.js (v18+)
- npm (v8+)
Clone the repository and install dependencies:
git clone https://github.com/Tartarus6/temp_notes.git
cd temp_notes
npm install
Create the database file and format it. Also run the following to update database format if changed.
npx drizzle-kit push
The application requires both the backend server and frontend development server to run simultaneously.
# Start the backend server (in one terminal)
npm run start
# Start the frontend dev server (in another terminal)
npm run dev -- --open
look at DEPLOYMENT.md for detailed instructions
/src/lib- Core components and utilities/src/routes- SvelteKit routes and API endpoints/src/routes/api- Server-side API routes that proxy to the tRPC server/src/lib/server- Backend tRPC server and database logic/src/lib/client- Client-side API communication utilities- SQLite database file in project root
The application uses a layered architecture:
- Frontend (SvelteKit): Runs on port 5173 (dev) with reactive components
- SvelteKit API Layer: RESTful API routes at
/api/*that handle client requests - Backend tRPC Server: Internal server running on port 3001 with direct database access
- Database (SQLite): File-based storage with Drizzle ORM
The client never communicates directly with port 3001. Instead, all API calls go through SvelteKit's server-side API routes, which then communicate internally with the tRPC server.
- Make your changes in the development environment
- Run linting and type checking:
npm run lint
npm run check
- Format your code:
npm run format
- Test your changes locally
- Create a pull request
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request