A mobile-only application for tracking real-world data, logging facts, and discovering insights through analytics. Currently a simple counter app, but designed to evolve into a comprehensive tracking and analytics platform.
Zubo Counter is a mobile-only application designed for those who believe that there's no such thing as too much information when it comes to logging real-world facts and events. The core idea is simple: capture data from your daily life, track it over time, and then analyze it to discover patterns, correlations, and insights that might not be immediately obvious.
Whether you're tracking books read, workouts completed, habits formed, or any other quantifiable aspect of your life, Zubo Counter aims to help you understand your data through powerful analytics, visualizations, and comparisons. It's built for people who love statistics, year-end summaries, and visualizing changes and progress over time.
Currently, the app provides a solid foundation with basic counter functionality. The underlying architecture is designed to support future features.
- ✅ Create and manage counters
- ✅ Customizable counter names and emoji icons
- ✅ Increment/decrement with configurable step values
- ✅ Counter change log
- ✅ Built-in stopwatch
- Node.js 18+
- pnpm (required - project uses pnpm-specific features)
# Clone the repository
git clone https://github.com/masawik/count-log.git
cd count-log
# Install dependencies
pnpm install
# Start development server
pnpm dev# Build frontend and sync with Android
pnpm build
# Or build separately
pnpm build:front # Build React app
pnpm sync:android # Sync with Capacitor# Run E2E tests
pnpm test:e2e
# Run visual regression tests
pnpm test:s
# Update visual snapshots
pnpm test:us# Type checking
pnpm typecheck
# Linting
pnpm lint
pnpm lint:fix
# CSS linting
pnpm stylelint
# FSD architecture validation
pnpm fsdcheck
# Run all checks
pnpm fullcheck-
Ensure Android Studio is installed with Android SDK
-
Build the project:
pnpm build -
Run on Android device/emulator:
npx cap run android
This project is built with a focus on scalability, maintainability, and performance. The architecture choices reflect a long-term vision:
- React 19 - Latest React with concurrent features
- React Router v7 - Modern routing with SSR support
- TypeScript - Full type safety
- Effector - Reactive state management with excellent TypeScript support
- Feature-Sliced Design (FSD) - Scalable, maintainable code organization
- Enforced with Steiger linter
- Clear separation of concerns:
entities,features,widgets,pages,shared
- SQLite (via Capacitor Community SQLite) - Local, encrypted database
- sql.js - SQLite compiled to WebAssembly for browser support
- Kysely - Type-safe SQL query builder
- Capacitor SQLite Kysely - Integration layer for native environments
- Radix UI Themes - Accessible, customizable component library
- Tailwind CSS - Utility-first styling
- Lucide React - Beautiful icon library
- Capacitor 8 - Native mobile app framework
- Android - Native Android app support
- Playwright - E2E and visual regression testing
- ESLint - Code quality and consistency
- Stylelint - CSS linting
- Prettier - Code formatting
Contributions are welcome! I'm happy to receive any help with the project.
If you want to practice your skills or tackle a small task, check out the good first issues. These are beginner-friendly issues that are great for getting familiar with the codebase.
If you're interested in making a significant contribution and developing a feature, take a look at the project backlog to see what's planned and where you can make an impact.
This project follows Feature-Sliced Design principles, so please ensure your changes align with the architecture.
If you're new to open source contributions, check out this excellent guide: Fork, Commit, Merge - it walks you through the entire contribution workflow on GitHub.
Before submitting a pull request, make sure to run pnpm fullcheck to ensure code quality.