Inspiration
“My Emotion Map” is a simple and direct name, which reflects the product’s core principle: simple interaction, clearer understanding.
As a member of the neurodivergent community, I have explored many mood tracking and personal productivity apps. However, many of them rely on streaks, frequent reminders, visually crowded interfaces, and rewards for positive emotions. These features are intended to motivate users, but they can also turn recording into another source of cognitive pressure.
Many emotion-tracking products also assume that negative emotions should be corrected and that users should always be moving toward a more positive state. But negative emotions are not errors, and recording should not become a task that users are required to maintain.
Human emotions are often connected to places, dates, memories, and images. This led me to create My Emotion Map: a recording and reflection tool without streaks, emotional judgment, or pressure to immediately understand every experience.
The project uses a minimalist visual language, relying on icons, spatial hierarchy, and limited text to reduce cognitive load. Stars on the map serve both as records and as visible traces of a user’s emotional life.
How neurodivergent users shaped My Emotion Map
I help manage a small neurodiversity community on Xiaohongshu, and I invited nearly ten community members to test My Emotion Map during development.
Interface feedback. One tester wanted more “breathing room” and smoother navigation. This led me to keep the map as a persistent visual foundation rather than replacing it with dense full-screen modules. Other views appear above it while preserving spatial continuity, reducing visual interruption and keeping the interface lightweight.
AI architecture feedback. Another tester pointed out that memory retrieval, prompt assembly, and contextual data collection could slow responses if too much work happened on the client. This pushed me to move retrieval and prompt orchestration to server-side Edge Functions. I also separated lightweight casual conversation from record-aware queries: a planner first decides whether personal-memory retrieval is actually needed, and record-based requests use only relevant authorized evidence rather than sending unnecessary context to the model.
User experience feedback. Testers described the interface as friendly, minimal, and warm, with a poster-like visual quality. They also found the skip options and interaction flow easy to use, which made recording feel less mentally demanding. Several felt this could make the app easier to return to over time and help them gradually recognize patterns across their own emotional records. One tester who had previously used other platforms to build custom maps told me that My Emotion Map offered a noticeably better experience and visual result than the tools she had been using.
The result is a product where accessibility influences both the visible interface and the architecture behind the AI.
What it does
Create Users can place a star by dragging it directly onto the map, entering coordinates, or importing GPS information from a photo.
Record Users can type, use voice input, or skip information they do not want to provide. Unknown emotions remain unknown. The application does not invent or automatically complete missing emotional data.
Review Users can revisit past records through both the map and calendar, exploring connections between emotions, locations, dates, and life events.
Revisit Users can set a future reflection date for any record. When that date arrives, the AI can start an in-app follow-up conversation. The application can also remind users when they return near a star they have not visited for a long time. Every reminder can be ignored. There are no streaks, penalties, or required tasks.
Reflect The AI can use the user’s own records to help compare past and present feelings. Later reflections never overwrite the original record. The AI does not diagnose the user or present speculation as fact.
Star Inbox Only one follow-up remains active at a time. Additional messages are stored in the Star Inbox, allowing users to review them when they are ready instead of being chased by notifications.
Connect The project provides an optional MCP interface that allows users to query their emotion records from other MCP-compatible tools. Access is read-only by default. Actions that could modify data only create proposals and require confirmation inside the application before they can be applied.
How we built it
My Emotion Map was built with:
- React 19, TypeScript, and Vite
- MapLibre GL and react-map-gl
- Supabase Auth, Database, and Edge Functions
- exifr for extracting GPS and capture information from photos
- Motion for interface animation and reduced-motion support
- Lucide React for the icon system
- Vitest, Testing Library, and Playwright for testing The project follows a local-first data model. Users can create and edit records locally before they are synchronized to the cloud through a revision-aware sync process. Account data is isolated between users. AI credentials and privileged keys are stored only on the server and are never exposed in browser code. AI responses must be grounded in records authorized by the user and must distinguish between known information, missing information, and speculation.
Challenges we ran into
- Reducing cognitive load Minimalism is not simply about removing text and buttons. It is about reducing the number of decisions a user must make. Every feature had to answer one question: does it directly help the user record, understand, review, or reflect?
- Designing a flow without creating pressure Discovery, recording, review, and reflection need to form a coherent journey without becoming a mandatory sequence. A user can place only a star or create a detailed record. They can schedule a follow-up or never revisit it.
- Connecting emotion tracking to the real world The project needed to handle locations, GPS inaccuracies, photo metadata, dates, time zones, repeat visits, and cross-device synchronization. The map is not a decorative background. It is the primary entry point into memory.
- Defining boundaries for AI The AI can initiate follow-ups that the user has requested, but it should not pressure, diagnose, or invent explanations for the user’s emotions.
- Building local-first synchronization Offline records, account isolation, version conflicts, repeated submissions, deletion, and recovery are significantly more complex than simply uploading data to a database. The system must protect the user’s original records from being silently overwritten.
Accomplishments that we're proud of
We created a product logic that differs from traditional emotion-tracking applications:
- No streaks or completion metrics
- No rewards for positive emotions
- No punishment or correction of negative emotions
- Records are allowed to remain incomplete
- Emotions are allowed to remain unknown
- The map, calendar, follow-ups, AI, and Star Inbox form one connected flow
- Original records remain separate from later reflections
- Account isolation, photo GPS import, local-first synchronization, and permission-controlled MCP access
- AI responses are grounded in evidence instead of invented interpretations Most importantly, My Emotion Map does not become another task that users must manage in order to benefit from it.
What we learned
We learned that minimalism is not about making an interface look empty. It is about reducing the amount of judgment, memory, and interaction required from the user. “Non-judgmental” also cannot remain only a product statement. It must be reflected in the application’s data structures and rules:
- Unknown emotions are not automatically completed
- Negative emotions are not treated as errors
- Interrupted use is not punished through broken streaks
- AI speculation is never stored or presented as fact We also learned that AI initiative must be designed together with user control. A system being capable of starting a conversation does not mean it should interrupt the user at any time. A model being capable of suggesting an explanation does not give it the authority to define the user’s experience.
What's next for My Emotion Map
The next stage is to integrate optional health information with explicit user permission, including:
- Heart rate
- Sleep duration
- Other user-selected health data This information will not be used for automatic diagnosis or to decide what the user was feeling. It will only provide optional context for discovering patterns between physical condition, location, time, and emotion. Future plans also include:
- More reliable discovery and follow-up for nearby older stars
- Native mobile support and background awareness
- More robust offline and cross-device synchronization
- Data export and long-term personal archiving
- More detailed AI privacy and permission controls
- Expanded MCP connections with other personal tools My Emotion Map aims to become a quiet piece of personal infrastructure. It does not pressure users to change or explain their lives for them. It preserves traces of what actually happened and helps users see those traces again when they choose to return.
Built With
- axe-core
- exifr
- geolocation-api
- lucide-react
- maplibre-gl
- mcp
- motion
- playwright
- postgresql
- react
- react-map-gl
- supabase
- supabase-auth
- supabase-edge-functions
- testing-library
- typescript
- vite
- vitest
- web-speech-api


Log in or sign up for Devpost to join the conversation.