A time management system that learns natural rhythms and protects privacy.
erēmois (from ancient Greek ἐρήμοις) refers to a quiet wilderness where people found clarity and direction. This concept shapes our approach: creating a space where individuals can understand and work with their natural patterns, free from external pressures and surveillance.
In a world where digital tools often demand trading privacy for convenience, erēmois takes a different path - one where technology adapts to people, not the other way around, and where data stays in users' hands.
- Data remains on user devices
- AI learns locally, adapts privately
- End-to-end encrypted sync (optional)
- Complete offline functionality
- Transparent data handling
- Pattern recognition that respects privacy
- Adaptive scheduling based on natural rhythms
- Energy-aware task management
- Clear reasoning behind suggestions
- Customizable learning parameters
Choose the approach that fits your needs:
Personal Installation
- Runs entirely on your devices
- Zero data sharing
- Minimal resource requirements
- Available for desktop and mobile
- P2P sync between devices
Self-Hosted Server
- Control your own infrastructure
- Multi-device synchronization
- Family or small team sharing
- Custom integrations
- Local backup systems
Enterprise Deployment
- Advanced security features
- Custom authentication
- Infrastructure integration
- Comprehensive monitoring
- Scalable architecture
interface AICore { // Local learning pipeline learn(data: UserPattern): Promise<void>; // Privacy-preserving predictions predict(context: TimeContext): Promise<Suggestion>; // Transparent reasoning explain(suggestion: Suggestion): Explanation; }- Circular visualization reflecting natural rhythms
- Smart time blocks that learn patterns
- Real-time energy adaptation
- Multi-scale views (hour/day/week/month/year)
- Customizable visualizations
- Events (E): Time-specific activities with flexible rules
- Tasks (T): Adaptive to-do items with custom priority
- Projects (P): Long-term goals with pattern recognition
- Energy-aware scheduling
- Personal categorization systems
- TensorFlow.js for local processing
- Efficient resource usage
- Privacy-preserving learning
- Adaptive scheduling
- Pattern recognition
- TensorFlow.js / ONNX Runtime (Edge AI)
- SQLite (Local Storage)
- Tauri (Desktop)
- React Native (Mobile)
- TypeScript (Development)
- ESLint
- Jest
- TypeScript
- Prettier
- Husky
eremois/ ├── apps/ # Applications │ ├── desktop/ # Desktop (Tauri) │ ├── mobile/ # Mobile (React Native) │ └── web/ # Progressive Web App ├── packages/ # Core packages │ ├── core/ # Business logic │ ├── ai/ # Edge AI implementation │ ├── storage/ # Local storage │ └── ui/ # Shared components └── docs/ # Documentation - Node.js 18+
- npm or yarn
- A Supabase account (free tier works great!)
- Create a new project on Supabase
- Copy
.env.exampleto.env.local:cp apps/web/.env.example apps/web/.env.local
- Get your Supabase credentials:
- Go to your Supabase project dashboard
- Navigate to Project Settings -> API
- Copy the
Project URLandanonpublic key - Update your
.env.localwith these values
cd apps/web npm install npm run devYour app should now be running on http://localhost:3000
The project uses Supabase as the backend with the following schema:
-- Users table (handled by Supabase Auth) -- Additional user metadata can be stored in public.users table create table public.users ( id uuid references auth.users not null primary key, email text, created_at timestamp with time zone default timezone('utc'::text, now()) not null, updated_at timestamp with time zone default timezone('utc'::text, now()) not null ); -- Enable Row Level Security alter table public.users enable row level security; -- Create policies create policy "Users can view their own data" on public.users for select using (auth.uid() = id); create policy "Users can update their own data" on public.users for update using (auth.uid() = id);The project uses Supabase Authentication with:
- Email/Password authentication
- Protected routes using middleware
- Persistent sessions
To customize authentication methods or add social providers:
- Go to your Supabase project dashboard
- Navigate to Authentication -> Providers
- Enable and configure desired providers
- Fork the repository
- Create your feature branch
- Set up your environment variables following the steps above
- Make your changes
- Submit a pull request
For detailed contribution guidelines, see CONTRIBUTING.md
- Node.js (v18 or later)
- npm (v9 or later)
- Git
git clone https://github.com/ethandeng/eremois.git cd eremois npm installnpm run dev # Start development npm run test # Run tests npm run build # Build for productionerēmois grows through community understanding and careful implementation. The project welcomes:
- Bug reports and feature discussions through issues
- Broader conversations in discussions
- Code contributions via pull requests
- Documentation improvements
- Use case sharing and feedback
erēmois is free software, developed by the community and released under the MIT license. To support its continued development and independence:
Contributions help maintain the project's focus on privacy, adaptability, and community benefit.