Skip to content

bbarni2020/mapories

Folders and files

NameName
Last commit message
Last commit date

Latest commit

dc306a9 · · May 2, 2026

History

21 Commits
Apr 25, 2026
May 2, 2026
Apr 26, 2026
Apr 23, 2026
Apr 25, 2026
Apr 26, 2026
Apr 26, 2026
Apr 30, 2026
Apr 26, 2026

Repository files navigation

Mapories

A privacy-first shared journal where memories are pinned to places on a map. Your stories stay yours until you're ready to share them.

Project structure

This is a monorepo split into two main pieces:

  • web/apps/api/ — Fastify + Prisma backend that handles authentication, encryption, media storage, and the delayed-reveal logic that keeps posts private until they're unlocked
  • web/apps/web/ — React frontend with the map, journals, and the UI that makes all of this actually work

Both live under web/ because they share a docker-compose setup and general dependencies.

What you can do with it

  • Sign in with Google, no accounts to manage
  • Drop journal entries on a map and see them visually
  • Mark posts as private — they stay hidden until one month passes (or you're signed in as the author)
  • Add photos, encrypt sensitive data, manage who sees what
  • Admins get a platform to manage users, roles, and pricing tiers

Getting started

1. Copy the environment file

cd web
cp .env.example .envv

2. Generate your app data encryption key

openssl rand -hex 32

Paste this into APP_ENCRYPTION_KEY in your .env.

3. (Optional) Set up Google OAuth

If you want one-click login:

# Get a Client ID from Google Cloud Console, then set:
GOOGLE_CLIENT_ID=your_client_id_here
VITE_GOOGLE_CLIENT_ID=same_client_id_herere

4. Start everything

docker compose up --build

Open http://localhost:5173 and you're in.

Tech stack

  • Backend: Fastify, Prisma, PostgreSQL
  • Frontend: React, Vite
  • Infrastructure: Docker Compose
  • Auth: Google Identity Services, refresh token rotation
  • Security: CSRF protection, encrypted payloads, rate limiting

Documentation

For detailed setup, environment variables, and feature breakdown, check out web/README.md.

Development

The whole thing runs in Docker. If you're working on the API or frontend:

# Rebuild and restart
docker compose up --build



# Check logs
docker compose logs -f api
docker compose logs -f webeb

Database migrations happen automatically on startup via Prisma.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages