Skip to content

Recall is lightning-fast. It saves instantly, searches instantly, and gets out of your way—so you never miss a thought. Pure speed, pure focus.

Notifications You must be signed in to change notification settings

Aryan-202/Recall

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Here's a comprehensive file structure for your notes-taking desktop app using PostgreSQL + Tauri + SvelteKit + Rust + Bun:

Recall/
├── src-tauri/                    # Tauri Rust backend
│   ├── src/
│   │   ├── main.rs              # Tauri application entry point
│   │   ├── lib.rs               # Library exports and module declarations
│   │   ├── commands/            # Tauri command handlers
│   │   │   ├── mod.rs           # Commands module declaration
│   │   │   ├── notes.rs         # Notes-related commands
│   │   │   ├── tags.rs          # Tags-related commands
│   │   │   ├── categories.rs    # Categories-related commands
│   │   │   └── attachments.rs   # File attachment commands
│   │   ├── database/            # Database management
│   │   │   ├── mod.rs           # Database module declaration
│   │   │   ├── connection.rs    # PostgreSQL connection setup
│   │   │   ├── migrations/      # Database migrations
│   │   │   │   ├── mod.rs       # Migrations module
│   │   │   │   ├── 0001_initial_schema.sql
│   │   │   │   ├── 0002_add_tags.sql
│   │   │   │   └── migration_manager.rs
│   │   │   ├── models/          # Database models/structs
│   │   │   │   ├── mod.rs       # Models module
│   │   │   │   ├── note.rs      # Note model
│   │   │   │   ├── tag.rs       # Tag model
│   │   │   │   ├── category.rs  # Category model
│   │   │   │   └── attachment.rs # Attachment model
│   │   │   └── repository/      # Data access layer
│   │   │       ├── mod.rs       # Repository module
│   │   │       ├── notes_repository.rs
│   │   │       ├── tags_repository.rs
│   │   │       ├── categories_repository.rs
│   │   │       └── attachments_repository.rs
│   │   ├── utils/               # Utility functions
│   │   │   ├── mod.rs           # Utils module
│   │   │   ├── error.rs         # Custom error types
│   │   │   ├── validation.rs    # Input validation
│   │   │   └── helpers.rs       # Helper functions
│   │   ├── config/              # Configuration management
│   │   │   ├── mod.rs           # Config module
│   │   │   └── settings.rs      # App settings
│   │   └── menu/               # Tauri menu system
│   │       ├── mod.rs           # Menu module
│   │       └── builder.rs       # Menu builder
│   ├── Cargo.toml               # Rust dependencies
│   ├── Cargo.lock               # Rust lock file
│   ├── .env                     # Environment variables (database URL, etc.)
│   └── build.rs                 # Optional build script
├── src/                         # SvelteKit frontend
│   ├── app.html                 # Main HTML template
│   ├── app.d.ts                 # TypeScript declarations
│   ├── +layout.svelte          # Root layout
│   ├── +layout.ts              # Layout load function
│   ├── +layout.server.ts       # Server layout load
│   ├── +page.svelte            # Home page
│   ├── +page.ts                # Home page load
│   ├── +page.server.ts         # Home page server load
│   ├── +error.svelte           # Error page
│   ├── lib/                    # Shared libraries and utilities
│   │   ├── index.ts            # Barrel exports
│   │   ├── stores/             # Svelte stores
│   │   │   ├── notes.store.ts
│   │   │   ├── tags.store.ts
│   │   │   ├── categories.store.ts
│   │   │   ├── ui.store.ts
│   │   │   └── settings.store.ts
│   │   ├── utils/              # Frontend utilities
│   │   │   ├── api.ts          # Tauri API wrapper
│   │   │   ├── formatters.ts   # Text/date formatters
│   │   │   ├── validators.ts   # Frontend validation
│   │   │   ├── shortcuts.ts    # Keyboard shortcuts
│   │   │   └── fileHandler.ts  # File handling utilities
│   │   ├── types/              # TypeScript types
│   │   │   ├── index.ts
│   │   │   ├── note.ts
│   │   │   ├── tag.ts
│   │   │   ├── category.ts
│   │   │   └── attachment.ts
│   │   ├── components/         # Reusable UI components
│   │   │   ├── ui/             # Basic UI components
│   │   │   │   ├── Button/
│   │   │   │   │   ├── Button.svelte
│   │   │   │   │   └── index.ts
│   │   │   │   ├── Input/
│   │   │   │   │   ├── Input.svelte
│   │   │   │   │   └── index.ts
│   │   │   │   ├── Modal/
│   │   │   │   │   ├── Modal.svelte
│   │   │   │   │   └── index.ts
│   │   │   │   ├── Editor/
│   │   │   │   │   ├── Editor.svelte
│   │   │   │   │   └── index.ts
│   │   │   │   └── ... (other UI components)
│   │   │   └── notes/          # Notes-specific components
│   │   │       ├── NoteCard/
│   │   │       │   ├── NoteCard.svelte
│   │   │       │   └── index.ts
│   │   │       ├── NoteEditor/
│   │   │       │   ├── NoteEditor.svelte
│   │   │       │   └── index.ts
│   │   │       ├── NoteList/
│   │   │       │   ├── NoteList.svelte
│   │   │       │   └── index.ts
│   │   │       └── ... (other notes components)
│   │   └── constants/          # Application constants
│   │       ├── index.ts
│   │       ├── routes.ts       # Route constants
│   │       └── settings.ts     # App settings constants
│   ├── routes/                 # SvelteKit routes
│   │   ├── +layout.svelte     # App layout
│   │   ├── +layout.ts         # Layout load
│   │   ├── notes/             # Notes routes
│   │   │   ├── +page.svelte   # Notes list
│   │   │   ├── +page.ts       # Notes list load
│   │   │   ├── [id]/          # Single note
│   │   │   │   ├── +page.svelte
│   │   │   │   ├── +page.ts
│   │   │   │   └── +page.server.ts
│   │   │   ├── new/           # Create new note
│   │   │   │   ├── +page.svelte
│   │   │   │   └── +page.ts
│   │   │   └── edit/          # Edit note
│   │   │       └── [id]/
│   │   │           ├── +page.svelte
│   │   │           └── +page.ts
│   │   ├── tags/              # Tags routes
│   │   │   ├── +page.svelte
│   │   │   ├── +page.ts
│   │   │   └── [id]/
│   │   │       ├── +page.svelte
│   │   │       └── +page.ts
│   │   ├── categories/        # Categories routes
│   │   │   ├── +page.svelte
│   │   │   ├── +page.ts
│   │   │   └── [id]/
│   │   │       ├── +page.svelte
│   │   │       └── +page.ts
│   │   ├── search/            # Search route
│   │   │   ├── +page.svelte
│   │   │   └── +page.ts
│   │   ├── settings/          # Settings route
│   │   │   ├── +page.svelte
│   │   │   └── +page.ts
│   │   └── about/             # About page
│   │       ├── +page.svelte
│   │       └── +page.ts
│   ├── styles/                # Global styles
│   │   ├── app.css            # Global CSS
│   │   ├── variables.css      # CSS variables
│   │   ├── utilities.css      # Utility classes
│   │   └── themes/            # Theme files
│   │       ├── light.css
│   │       ├── dark.css
│   │       └── high-contrast.css
│   └── assets/                # Static assets
│       ├── icons/             # App icons
│       │   ├── app-icon.png
│       │   ├── note-icon.svg
│       │   ├── tag-icon.svg
│       │   └── ... (other icons)
│       ├── fonts/             # Custom fonts
│       │   └── ... (font files)
│       └── images/            # Images
│           └── ... (image files)
├── static/                    # Static files served by Tauri
│   ├── favicon.ico
│   ├── icon.png
│   ├── icon.ico
│   └── ... (other static files)
├── migrations/                # Database migrations (optional alternative location)
│   ├── 0001_initial_schema.sql
│   ├── 0002_add_tags.sql
│   └── ... (other migrations)
├── .github/                   # GitHub configuration
│   ├── workflows/
│   │   ├── ci.yml            # CI pipeline
│   │   └── release.yml       # Release pipeline
│   └── dependabot.yml        # Dependency updates
├── scripts/                   # Build and utility scripts
│   ├── setup-db.sh           # Database setup script
│   ├── build-all.sh          # Build script
│   ├── dev.sh                # Development script
│   └── package.sh            # Packaging script
├── tests/                    # Test files
│   ├── unit/                 # Unit tests
│   │   ├── frontend/         # Frontend tests
│   │   │   ├── stores/
│   │   │   ├── utils/
│   │   │   └── components/
│   │   └── backend/          # Backend tests
│   │       ├── database/
│   │       ├── commands/
│   │       └── utils/
│   ├── integration/          # Integration tests
│   │   ├── api/
│   │   └── e2e/
│   └── fixtures/             # Test data
│       ├── notes.json
│       ├── tags.json
│       └── ... (other fixtures)
├── docs/                     # Documentation
│   ├── architecture.md       # Architecture overview
│   ├── database.md          # Database schema
│   ├── api.md               # API documentation
│   ├── setup.md             # Setup instructions
│   └── development.md       # Development guide
├── package.json              # Node.js dependencies and scripts
├── package-lock.json         # Node.js lock file (or bun.lockb for Bun)
├── bun.lockb                 # Bun lock file
├── svelte.config.js          # SvelteKit configuration
├── vite.config.ts           # Vite configuration
├── tsconfig.json            # TypeScript configuration
├── tailwind.config.js       # Tailwind CSS configuration (if using)
├── postcss.config.js        # PostCSS configuration
├── eslint.config.js         # ESLint configuration
├── prettier.config.js       # Prettier configuration
├── tauri.conf.json          # Tauri configuration
├── .env.example             # Example environment variables
├── .env.local               # Local environment variables
├── .gitignore               # Git ignore file
├── README.md                # Project README
├── LICENSE                  # License file
├── CHANGELOG.md             # Version changelog
├── CONTRIBUTING.md          # Contribution guidelines
├── CODE_OF_CONDUCT.md       # Code of conduct
├── SECURITY.md              # Security policy
└── .cursorrules             # Cursor editor rules (optional)

Additional Configuration Files (if using specific tools):

├── docker-compose.yml        # Docker Compose for PostgreSQL
├── Dockerfile               # Dockerfile for containerization
├── nix/                     # Nix configuration (optional)
│   ├── default.nix
│   └── shell.nix
├── .vscode/                 # VS Code settings
│   ├── settings.json
│   ├── extensions.json
│   └── launch.json
├── .husky/                  # Git hooks
│   ├── pre-commit
│   └── commit-msg
├── commitlint.config.js     # Commit message linting
└── lefthook.yml            # Lefthook configuration (alternative to husky)

Database Files (optional separate location):

├── database/
│   ├── init/               # Database initialization scripts
│   │   ├── 01_init.sql
│   │   └── 02_seed.sql
│   ├── backups/            # Database backup location
│   │   └── ... (backup files)
│   └── schemas/            # Database schema definitions
│       ├── notes.sql
│       ├── tags.sql
│       ├── categories.sql
│       └── attachments.sql

Tauri-specific Files:

src-tauri/
├── icons/                  # Tauri application icons
│   ├── 32x32.png
│   ├── 128x128.png
│   ├── 128x128@2x.png
│   └── icon.ico
├── target/                # Rust build output (generated)
│   └── ... (build artifacts)
└── .cargo/               # Cargo configuration
    └── config.toml

This structure organizes your project into logical sections:

  • src-tauri/: Rust backend with database logic and Tauri commands
  • src/: SvelteKit frontend with components, stores, and routes
  • tests/: Comprehensive testing structure
  • scripts/: Automation scripts
  • docs/: Project documentation
  • Configuration files for all tools in the stack

The structure supports:

  • Clean separation between frontend and backend
  • Modular Rust code organization
  • Component-based Svelte architecture
  • Database migrations and models
  • Type safety with TypeScript
  • Comprehensive testing
  • Easy scalability for new features

About

Recall is lightning-fast. It saves instantly, searches instantly, and gets out of your way—so you never miss a thought. Pure speed, pure focus.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published