Track your progress, break bad habits, and build a better you.
Proficio is a cross-platform habit tracking application that helps you monitor your journey away from bad habits. Built with Tauri, SvelteKit, and TypeScript, it provides a clean, intuitive interface to visualize your progress in real-time.
- Real-time Tracking: Live counter showing days, hours, and minutes since you started
- Visual Progress: Beautiful circular progress indicators to visualize your journey
- Milestone Badges: Automatic badges for weeks, months, and years of progress
- Dark Mode: Full dark mode support for comfortable viewing any time
- Data Export: Export your habit history to CSV for analysis
- Reset & Restart: Reset counters when needed while maintaining your history
- Local Storage: All data stored locally on your device using SQLite
- Cross-platform: Available on Windows, macOS, Linux, and Android
- No additional requirements - just download and run!
- Bun (JavaScript runtime and package manager)
- Rust via rustup
- Node.js (v18 or higher, if not using Bun)
- Android Studio with SDK and NDK
- Java Development Kit (JDK) 17 or higher
- Gradle (included in Android project)
- Download the appropriate release for your platform from the Releases page
- Extract the archive
- Run the application
-
Clone the repository:
git clone https://github.com/MordechaiHadad/proficio.git cd proficio -
Install dependencies:
bun install
-
Run in development mode:
bun run tauri dev
-
Build for production:
bun run tauri build
-
Initialize Android project:
bun run tauri android init
-
Build and run on Android device or emulator:
bun run tauri android dev
- Click the "Add Habit" tab in the bottom navigation
- Enter a name for your habit (up to 20 characters)
- Choose an icon that represents your habit:
- Smoking
- Drinking
- Exercise
- Sugar
- Gaming
- Screen Time
- Fast Food
- Click "Add Habit" to start tracking
- Your dashboard shows all active habits with real-time counters
- Each habit card displays:
- Days, hours, and minutes since you started
- A circular progress indicator
- Milestone badges (weeks, months, years)
- Reset and delete buttons
- Click the "Reset Counter" button on any habit card
- Confirm the reset in the dialog
- Your previous streak is saved in the history, and a new tracking session begins
- Click the trash icon on any habit card
- Confirm the deletion
- All tracking history for that habit will be permanently removed
- Go to the Settings tab
- Click "Export CSV" under Data Management
- Your habit history will be saved to your Downloads folder as a CSV file
Toggle dark mode from the Settings page. Your preference is saved locally.
All data is stored locally in a SQLite database (proficio.db) in your application data directory:
- Windows:
%APPDATA%\com.morde.proficio - macOS:
~/Library/Application Support/com.morde.proficio - Linux:
~/.local/share/com.morde.proficio - Android: Internal app storage
The application uses three main tables:
habits: Stores habit definitions (name, icon, description)habit_tracking: Records tracking sessions with start dates and failure datesapp_settings: Stores application preferences like dark mode
- β Windows
- β macOS
- β Linux
- β Android (via Tauri Mobile)
proficio/
βββ src/ # Frontend source code
β βββ lib/ # Shared components and utilities
β β βββ components/ # Reusable Svelte components
β β βββ sveltlana/ # Custom UI component library
β β βββ db.ts # Database operations
β β βββ index.ts # Type definitions and utilities
β βββ routes/ # SvelteKit routes
β βββ +page.svelte # Dashboard
β βββ add/ # Add habit page
β βββ settings/ # Settings page
βββ src-tauri/ # Rust backend
β βββ src/ # Rust source code
β βββ migrations/ # Database migrations
β βββ capabilities/ # Tauri permissions
β βββ gen/ # Generated Android project
βββ package.json # Dependencies and scripts
bun run checkbun run check:watchExported CSV files contain the following columns:
- Habit Name: The name of the tracked habit
- Start Date: When the tracking session began
- Failure Date: When the habit was reset (empty if still ongoing)
- Days Lasted: Number of days the streak lasted
Edit src/lib/index.ts and add your icon to the icons object:
export const icons = {
// ... existing icons
your_icon: {
name: "Your Habit",
icon: YourIconComponent,
},
};- Create a new migration in
src-tauri/migrations/ - Update the migration version in
src-tauri/src/lib.rs - Implement the schema changes in SQL
If you experience database errors:
- Close the application completely
- Backup your database file (optional)
- Restart the application - migrations will run automatically
If Android builds fail:
- Ensure Android SDK and NDK are properly installed
- Set
ANDROID_HOMEenvironment variable - Run
bun run tauri android initagain
If dark mode preference doesn't save:
- Check application data directory permissions
- Ensure the database is writable
- Try resetting app settings from the Settings page