Skip to content

Database Design ​

Overview ​

Memesplora uses ent ORM for database management, supporting SQLite (development) and PostgreSQL (production). The database stores only metadata; actual file content is stored in the in-memory filesystem.

Schema ​

User ​

  • id, username (unique), email (unique), password, nickname
  • group_id, storage_used, max_storage, is_admin
  • created_at, updated_at

Space ​

  • id, name, description, total_size, used_size
  • block_size, device_id, device_type, status
  • owner_id (FK → User), created_at, updated_at

File ​

  • id, name, path, size, type, mime_type
  • inode_id, parent_id, storage_key, is_shareable
  • space_id (FK → Space), created_at, updated_at, deleted_at (soft delete)

Share ​

  • id, share_key (unique), download_limit, download_count
  • expire_at, is_password, password
  • owner_id (FK → User), space_id (FK → Space), file_id (FK → File)
  • created_at

Database Choice ​

EnvironmentDatabaseNotes
DevelopmentSQLiteNo configuration needed, file-based
Single-userSQLiteSuitable for single-user scenarios
ProductionPostgreSQLSupports concurrency, multi-user

Apache License 2.0