Skip to content

hassan-arif/mindflect

Repository files navigation

Mindflect Logo

Mindflect

Mindflect is an AI Journal app that includes daily prompts, journaling with photos, CRUD actions, category auto-generation, AI chat over past entries, subscription gating with Clerk Auth & Billing, profile management, and CMS controls via Sanity.

Demo

Mindflect Demo

Features

Smart Journaling
Daily prompts, rich text entries, photo uploads, and full CRUD support, with AI-driven categorization that intelligently reuses or creates categories.

AI Journal Assistant
A context-aware AI chat with access to your entire journaling history, featuring real-time streaming responses and tool calling for deeper analysis. Available on the Pro plan.

Authentication & Access Control
Secure Clerk-powered authentication with protected routes, user profiles, streak visibility, and subscription-aware gating.

Subscriptions & Billing
Production-ready billing via Clerk Billing and Stripe, supporting Free and Pro tiers, web-based checkout, upgrades, subscription management, and post-purchase state sync.

Engagement & Insights
Streak tracking, category-based browsing, and polished rich-text rendering to make long-term journaling rewarding and easy to explore.

Cross-Platform UI & Data
High-performance, responsive UI built with Tamagui for mobile and web, backed by Sanity CMS with typed GROQ queries, environment separation, and IDE-level tooling.

Development Highlights

  • Configured Tamagui for a performant, cross-platform design system in Expo.
  • Integrated Clerk authentication with protected routes, user state, and subscription awareness.
  • Built a fully typed Sanity CMS backend with schemas, seeded data, and MCP tooling.
  • Implemented a clean, type-safe data layer using GROQ and generated TypeScript types.
  • Created a reusable streak management hook powering Home and Profile screens.
  • Delivered a complete journal entry flow with media uploads and validation.
  • Implemented AI-powered categorization via Expo API routes using Vercel AI SDK and Groq.
  • Built full entries CRUD with list, view, edit, and delete flows.
  • Added AI Chat feature gating tied to Pro subscriptions.
  • Implemented end-to-end billing and plan upgrades with Clerk Billing.
  • Finished AI chat with streaming responses, tool calling, polyfills, and multi-step agent workflows.

Tech Stack

  • Expo / React Native
  • Tamagui
  • Clerk (Auth & Billing)
  • Sanity (CMS)
  • Vercel AI SDK
  • Groq

Debug Mode

Please create .env.local file at root and set relevant values before continuing

EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY=value1
CLERK_SECRET_KEY=value2
EXPO_PUBLIC_SANITY_PROJECT_ID=value3
EXPO_PUBLIC_SANITY_DATASET=value4
EXPO_PUBLIC_SANITY_TOKEN=value5
GROQ_API_KEY=value6

Please create another .env.local file at sanity folder and set relevant values before continuing

SANITY_STUDIO_SANITY_PROJECT_ID=value1
SANITY_STUDIO_SANITY_DATASET=value2
SANITY_STUDIO_SANITY_TOKEN=value3

Please fill empty strings in app.json and sanity.cli.ts

Expo App

yarn install

# Android
npx expo prebuild --platform android --clean
cd android && ./gradlew clean && cd ..
adb uninstall com.hassanarifmahmood.Mindflect
yarn android

# iOS
npx expo prebuild --platform ios --clean
yarn ios

Sanity Server

cd sanity
yarn install
yarn dev

Release Mode

Android

cd android
./gradlew app:assembleRelease
or
./gradlew app:bundleRelease

Server

eas login
npx expo export --platform web
eas deploy # copy deployed server origin and adjust it in app.json after this step

Sanity

cd sanity
yarn build
yarn deploy

Credits

Initial setup inspired by Sonny Sangha.