Memory Atlas – Create an Interactive Map That Tells Your Life Story Using React + FastAPI

by anonvanguard in Design > Websites

53 Views, 1 Favorites, 0 Comments

Memory Atlas – Create an Interactive Map That Tells Your Life Story Using React + FastAPI

new.png
FWSPKYYMPEDWTXL.png

Ever wished Google Maps could show memories instead of traffic?

In this project, you’ll build a beautiful interactive “memory map” where every location opens a personal story, photo, mood, or moment.

Instead of making a normal website, you’ll create something emotional, cinematic, and actually useful — a digital atlas of memories.

The best part?

You don’t need advanced coding knowledge to build it.

This project combines maps, storytelling, animations, and modern web design into one clean experience that looks futuristic but is beginner-friendly to create.

The final result feels like a digital memory journal mixed with Google Maps

So let’s build your own Memory Atlas

Supplies

logo.png

You’ll need:

  1. A laptop or PC
  2. Internet connection
  3. VS Code
  4. Node.js installed
  5. A free Mapbox account
  6. A free MongoDB Atlas database
  7. Basic React knowledge (helpful but not mandatory)

Libraries & Tools:

  1. React.js
  2. Tailwind CSS
  3. Framer Motion
  4. Mapbox GL JS
  5. FastAPI
  6. MongoDB
  7. Render (deployment)

Create the Frontend

Screenshot 2026-05-23 005706.png
Screenshot 2026-05-22 181158.png

Start by creating a React project.

Open terminal and run:


npm create vite@latest

Choose:


React
JavaScript

Then install dependencies:


npm install
npm install tailwindcss framer-motion mapbox-gl axios react-router-dom

This frontend will handle:

  1. Interactive map
  2. Animations
  3. Timeline
  4. Memory cards
  5. Story pages


Configure Tailwind CSS

Screenshot 2026-05-22 181032.png
Screenshot 2026-05-23 010725.png

Initialize Tailwind:


npx tailwindcss init -p

Inside tailwind.config.js, add:


content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"]

Then add Tailwind directives inside index.css:


@tailwind base;
@tailwind components;
@tailwind utilities;

Now your UI styling setup is complete.

Add the Interactive Map

Screenshot 2026-05-23 011120.png
3 map.png
2 map.png
1 map.png

Create a free account on:

Mapbox

Copy your API token.

Now create a map component:


mapboxgl.accessToken = "YOUR_TOKEN"

Add a full-screen map and place clickable markers for memories.

After creation your map should look like shown in above screenshots which shows it is active and ready to use.

Each marker should contain:

  1. Title
  2. Description
  3. Photo
  4. Mood
  5. Date

When clicked, it opens a memory card.

This is the heart of the entire project.

Build the Memory Card System

Screenshot 2026-05-22 181224.png
Screenshot 2026-05-23 012308.png
Screenshot 2026-05-23 012248.png

Now create floating memory cards.

Each card should show:

  1. Image
  2. Place name
  3. Story
  4. Emotion
  5. Year

Add smooth animations using Framer Motion:


npm install framer-motion

Create markers on the map using coordinates.

Each marker represents a memory location.

Create the Backend With FastAPI

Screenshot 2026-05-23 012738.png
lmao.png

Now build the backend.

Install FastAPI:


pip install fastapi uvicorn pymongo

Create main.py

Your backend should:

  1. Store memories
  2. Fetch memories
  3. Delete memories
  4. Edit memories

FastAPI is perfect here because it is:

  1. Modern
  2. Very fast
  3. Clean to write
  4. Great for portfolio projects

Run server:


uvicorn main:app --reload


Connect MongoDB

mongo.png
mongo2.png

Create a free cluster on:

MongoDB Atlas

Create a database called:

memoryatlas

Store fields like:


{
"title": "",
"description": "",
"location": "",
"latitude": "",
"longitude": "",
"image": "",
"date": "",
"mood": ""
}

Now every memory becomes a real database entry connected to the map.

Once connected, the map data becomes fully dynamic.

Create the Timeline Feature

Screenshot 2026-05-22 181138.png
tysu.png

This feature makes the project much more interactive.

Add a horizontal timeline slider at the bottom of the screen.

When users move through years:

  1. Different memories appear
  2. Map updates dynamically
  3. Old trips and moments become explorable

As the year changes:

  1. Map markers animate
  2. Photos transition
  3. Story cards update

This transforms the project from a simple map into a visual story experience.

Add Mood-Based Themes

taj mahal.png
ok.png

When a user opens a memory, the UI dynamically updates based on the memory mood. This makes every memory feel unique and gives the project a much more artistic look.

You can change:

  1. Background gradients
  2. Card colors
  3. Glow effects
  4. Button styles
  5. Timeline colors

Examples:

Sad memories → dark blue theme

Happy memories → warm orange

Dreamy moments → purple glow


Do it by creating separate Tailwind or CSS styles for different moods and switch them dynamically based on the selected memory type.

const moodThemes = {
happy: "bg-orange-200 text-orange-900",
sad: "bg-blue-900 text-white",
dreamy: "bg-purple-900 text-pink-200 shadow-purple-500/50"
};

<div className={`p-4 rounded-xl ${moodThemes[memory.mood]}`}>
<h2>{memory.title}</h2>
<p>{memory.description}</p>
</div>

This tiny detail makes the project artistic instead of just technical.

Make the UI Responsive

Screenshot 2026-05-22 181206.png
yayayayayay.png

Now optimize the project so it works smoothly on both desktop and mobile devices.

A map-based app can easily feel cluttered on smaller screens, so responsive design is very important here.

Start by adjusting the main UI components:

  1. Resize marker popups for smaller screens
  2. Reduce sidebar width and spacing
  3. Make the timeline scrollable on mobile
  4. Scale fonts properly for readability
  5. Stack components vertically on smaller devices

Using Tailwind CSS responsive utilities makes this very easy.

For example:


<div className="
w-full
md:w-1/3
text-sm
md:text-base
p-3
md:p-6
">

In this example:

  1. w-full → full width on mobile
  2. md:w-1/3 → smaller sidebar on desktop
  3. text-sm → smaller mobile text
  4. md:text-base → larger desktop text

You can also use:

  1. hidden md:block
  2. flex-col md:flex-row
  3. overflow-x-scroll

to improve mobile layouts.

After responsiveness is added, the app should feel clean and smooth on phones, tablets, and desktops.

Deploy the Project

Gemini_Generated_Image_y76vyfy76vyfy76v.png
Gemini_Generated_Image_djkglpdjkglpdjkg.png

Now it’s time to put the project online so anyone can access it from a browser.

Frontend Deployment

Push your React project to GitHub and connect the repository to Render.

While creating the service:

  1. Select the frontend folder
  2. Build command:

npm install && npm run build

  1. Publish directory:
dist

Render will automatically build and host the React app.


Backend Deployment

Push the FastAPI backend to GitHub and create another Render service for it.

Use:


uvicorn main:app --host 0.0.0.0 --port 10000

as the start command.

After deployment, Render will generate a public backend URL for your API.


Database

MongoDB Atlas remains cloud-hosted and stores all memory data online.

Simply add the MongoDB connection string inside your backend environment variables.


Connect Everything

Finally, connect the frontend with the deployed backend API URL and test the app.

If everything works correctly, you should now be able to:

  1. Open the interactive map
  2. Add memories
  3. View timeline updates
  4. Access the app from any device

Your full-stack project is now live.

Final Result

Screenshot 2026-05-22 181122.png
Screenshot 2026-05-22 181049.png
Screenshot 2026-05-22 181231.png
FGUVW9EMPEDWU21.png
FCK1OSSMPEDWU2T.png

You now have a full-stack interactive memory mapping platform 🌍

Users can:

  1. Pin memories on maps
  2. Upload stories and photos
  3. Explore experiences through time
  4. View memories interactively

This project is a great introduction to modern full-stack web development while also creating something deeply personal and visual.

You can expand it further by adding:

  1. Authentication
  2. AI-generated travel summaries
  3. Shared collaborative maps
  4. Animated routes
  5. Public memory galleries

Thanks for reading — and happy building!