Memory Map is a location-aware media archive that allows users to upload photos, videos, and audio files.
The list of supported file types is defined in the allowed files list.
Time and location metadata are manually provided by users and are used to visualise uploaded media on an interactive world map.
Users can browse the map, click markers and explore media galleries tied to real-world locations - creating a digital memory atlas.
- Upload media files (images, videos and audio files).
- Manual location & timestamp tagging.
- Interactive world map with clickable memory pins.
- Gallery view for each map location.
You’ll need:
git clone https://github.com/nothingnesses/memory-map.git
cd memory-mapcp .env.example .env
direnv allowThis installs all dependencies and auto-loads the development shell whenever you enter the directory.
You can optionally configure the build mode and other settings by editing .env:
BUILD_MODE="debug"(default): Faster compilation, includes debug info.BUILD_MODE="release": Optimised build, smaller binaries, slower compilation.- Database, SMTP, and S3 storage configurations.
just serversMinIO object storage becomes available at: http://localhost:9001/login
- Username:
minioadmin - Password:
minioadmin
In another shell, run:
just backendBackend GraphQL playground: http://localhost:8000/
In another shell, run:
just frontendFrontend app: http://localhost:3000/
The project uses Just as a task runner.
just servers: Start PostgreSQL and MinIO via Nix.just backend: Start the Axum backend with hot-reloading (via Bacon).just frontend: Start the Leptos frontend (via Trunk).just prepare: Format code, run lints, and execute tests. Run this before submitting a PR.just regenerate-schema: Introspect the backend and update the frontend GraphQL schema.just scan-hardcoded: Scan the codebase for hardcoded secrets or values.
| Layer | Technology |
|---|---|
| Frontend | Leptos |
| UnoCSS | |
| Backend | Axum |
| GraphQL | |
| Storage | MinIO |
| Database | PostgreSQL |
| Development Environment | Nix package manager |
| nix-direnv | |
| Task Runner | Just |
memory-map/
│
├── .direnv/ # Direnv environment cache
├── backend/ # Axum and GraphQL backend
├── data/ # Database and storage volumes
├── devenv/ # Nix development environment
├── frontend/ # Leptos and UnoCSS frontend
├── shared/ # Shared utilities & types
├── .env.example # Environment configuration template
├── justfile # Development commands
├── Cargo.toml # Rust workspace configuration
├── Cargo.lock # Rust dependency lock file
└── README.md # Project documentation
We welcome contributions! Please ensure you run the preparation script before making a PR:
just prepareThis command will:
- Format code (
nix fmt,cargo fmt) - Run clippy lints
- Generate documentation
- Run tests
This project is licensed under the Blue Oak Model License 1.0.0.



