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 GPS location & timestamp tagging
- Interactive world map with clickable memory pins
- Gallery view for each map location
| 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
- Install dependencies
You’ll need:
- Clone & enter project (you only need to do this step once)
git clone https://github.com/nothingnesses/memory-map.git
cd memory-map- Setup environment (you only need to do this step once)
cp .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 by editing .env:
BUILD_MODE="debug"(default): Faster compilation, includes debug info.BUILD_MODE="release": Optimised build, smaller binaries, slower compilation.
- Start database & storage
just serversMinIO object storage becomes available at:
Username: minioadmin
Password: minioadmin
- Start backend
In another shell, run:
just backendBackend GraphQL playground:
- Start frontend
In another shell, run:
just frontendFrontend app:
Screenshots Map View Gallery View

API The backend exposes a GraphQL API at:
Screenshots GraphiQL

Use it to:
- Query memories by location
- Retrieve gallery data
We welcome contributions! Please ensure:
- direnv loads correctly
- All services start via
just - Frontend builds without errors
- Code is formatted (
cargo fmt)