"Less, but better." β Kenya Hara
A minimalist project management tool designed for creative studios. Unlike bloated alternatives, Enso focuses on flow, essence, and clarity while leveraging AI as a design mentor.
- Multi-user workspaces with role-based access
- Invite team members with different permission levels
- Real-time project synchronization across devices
- Manuscript View: Linear, narrative project flow
- Kanban Board: Visual task organization
- AI-powered project essence and task suggestions
- Visual mood boards with drag-and-drop
- Project Essence: Distill rough notes into strategic briefs
- Smart Tasks: Pragmatic work breakdown
- Mentorship: Strategic advice and tactical steps
- Uncle Iroh Mode: Philosophical guidance for creative blocks
- Multiple login options: Email/password, Google OAuth, GitHub OAuth
- Magic links: Passwordless authentication option
- Password recovery: Secure email-based password reset
- Row-level security: Database-level access control
- Secure sessions: Automatic token management
# Clone and install
git clone <your-repo>
cd enso
npm install
# Setup environment
cp .env.example .env.local
# Edit .env.local - set VITE_USE_SUPABASE=false
# Start development server
npm run devSee DEPLOYMENT.md for complete setup instructions.
- Framework: React 18 with TypeScript
- Styling: Tailwind CSS
- AI: Google Gemini API
- Database: Supabase (PostgreSQL)
- Hosting: Vercel
- Icons: Lucide React
Enso follows Japanese aesthetic principles:
- Paper (
#f4f4f0): The canvas - primary background - Sumi (
#1a1a1a): The ink - text and primary elements - Vermilion (
#cd2b1e): The stamp - accents and flow states - Gray (
#e5e5e5): The shadow - subtle elements
- Inter: UI elements, clean and modern
- Noto Serif JP: Headings and wisdom text
- Caveat: Handwritten notes and marginalia
enso/
βββ components/ # React components
β βββ LoginScreen.tsx
β βββ ProjectList.tsx
β βββ ProjectDetail.tsx
β βββ TeamManageModal.tsx
βββ context/ # React contexts
β βββ AuthContext.tsx
β βββ ThemeContext.tsx
βββ services/ # Data services
β βββ storage.ts # localStorage implementation
β βββ supabase-storage.ts # Supabase implementation
β βββ index.ts # Service selector
β βββ gemini.ts # AI integration
βββ lib/ # Utilities
β βββ supabase.ts # Supabase client
βββ types/ # TypeScript types
β βββ index.ts # Core types
β βββ database.ts # Supabase types
βββ database/ # Database schema
β βββ schema.sql # Supabase setup script
βββ App.tsx # Main application
# Storage backend selection
VITE_USE_SUPABASE=false # true for production, false for development
# Supabase (production)
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
# AI Integration
VITE_GEMINI_API_KEY=your_gemini_api_keyEnso supports two storage backends:
- localStorage (Development): Data persists locally, great for testing
- Supabase (Production): Real database with multi-user support
Toggle between them using the VITE_USE_SUPABASE environment variable.
The app uses a strict service layer to decouple UI from data storage:
// Current implementation automatically chooses:
import { authService, dbService } from './services';
// Based on VITE_USE_SUPABASE environment variableThis allows seamless switching between localStorage (development) and Supabase (production) without changing any component code.
Transforms rough ideas into strategic briefs:
const essence = await generateProjectEssence(roughNotes);Provides strategic and tactical guidance:
const advice = await getTaskMentorship(taskDescription);
// Returns: { advice: "strategic guidance", steps: ["tactical", "steps"] }- Row Level Security (RLS): Database-level access control
- Role-based permissions: Owner, Admin, Member, Viewer roles
- Secure authentication: Magic link-based login
- Environment isolation: Separate dev/prod configurations
- Supabase: 500MB database, perfect for small teams
- Vercel: 100GB bandwidth/month, custom domains included
- Total Cost: $0/month
See DEPLOYMENT.md for step-by-step instructions.
- Sign up with email/password or OAuth (Google/GitHub)
- Verify email if using email signup
- Complete profile setup for OAuth users
- Owner creates team and invites members via email
- Members receive invitations and can join instantly
- Role-based access: Owner, Admin, Member, Viewer permissions
- Real-time collaboration on shared projects
- Create project with AI-generated essence and strategy
- Switch views: Manuscript (linear) or Kanban (visual)
- AI mentorship: Get strategic advice and tactical steps
- Track progress with visual status indicators
- Forgot password? Use the reset link on login screen
- Change password via profile settings (coming soon)
- Secure sessions with automatic token refresh
- Fork the repository
- Create your feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
MIT License - see LICENSE file for details.
Design Philosophy: Kenya Hara (Muji) and traditional Japanese aesthetics Created by: Studio Poetics
"Less, but better." β¨