TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
Calendar-based habit tracking with custom metrics, stock keeping, expense tracking, scoped notes, and a built-in MCP server for AI assistants. Log in anonymously to look around.
ProductivityTypeScript · PLpgSQLGitHub @domhhvOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
A calendar app for tracking habits, built with React and Supabase
Taken from the repository README
Loading the full README.
Read the full README ↗
Habitrack is a simple and intuitive web app designed for logging habits and v isualizing them on a calendar view.
This app showcases the use of the following tools and technologies:
There's also a public roadmap on Featurebase where you can upvote and suggest new features: Habitrack Public Roadmap.
Follow these steps to get the project up and running on your local machine.
Clone the repository:
git clone https://github.com/domhhv/habitrack.git
Navigate to the project directory:
cd habitrack
Install dependencies:
yarn install
The project uses Supabase for database operations.
The Supabase project configuration, seeds, and migrations live under the supabase directory.
To set up a local Supabase instance, run the following commands (Docker required).
Start the local Supabase instance:
yarn db:start
This command starts Supabase Docker containers based on supabase/config.toml and creates a local Postgres database and services.
It should output the Studio URL, Database URL, and Project URL, among other info. Use the Studio URL to access the local Supabase dashboard in the browser, and the Database URL to connect to the local database directly if needed.
Retrieve the API URL and keys:
Run the following command to retrieve the API URL and keys for the local Supabase instance:
yarn db:status -o env
This command outputs the environment variables needed to connect to the local Supabase instance, including API_URL, PUBLISHABLE_KEY and SECRET_KEY.
Environment variables
Create a .env.development file in the root directory of the project and add the following environment variables:
SUPABASE_URL=<API_URL>
SUPABASE_PUBLISHABLE_KEY=<PUBLISHABLE_KEY>
SUPABASE_SECRET_KEY=<SECRET_KEY>
The publishable key ships to the browser, and Row Level Security protects the data. The secret key bypasses Row Level Security, so only server-only code reads it. Nothing uses it yet, so it's optional for now.
Apply migrations and seed the database:
yarn db:reset
This command resets the local database to a clean state, applies migrations from supabase/migrations, and seeds the db with essential initial data based on supabase/seed.sql.
Once the dependencies are installed and the local Supabase instance is running, you can run the app locally:
yarn dev
This command starts the development server and opens the app in your default browser.
There are a few ways to create and run migrations in the project.
supabase/schemas directory as neededThis project uses declarative database schema management, so the preferred way to make changes to the database schema is to modify the SQL files under supabase/schemas directory.
If you need to modify an existing table, add a new table/type/function, or make any other schema changes, do so by editing or adding SQL files in the supabase/schemas directory, then run:
yarn db:diff -f <your-migration-name>
Do the necessary changes in the local Supabase studio and then run the following to automatically generate a new migration file:
yarn db:diff -f <your-migration-name>
To create a new migration file manually, run the following command:
yarn db:migration:new <your-migration-name>
Either way, the new migration file will be created in the supabase/migrations directory. Write/change the SQL queries in the migration file to reflect the changes you want to make to the database schema. Then, apply the migration by running:
yarn db:migration:up # or
yarn db:reset # to reset the local DB and apply all migrations
After applying the migration, you also need to regenerate Supabase types by running:
yarn db:gen-types
Once the migration ends up in the main branch, it will be automatically applied to the production database.
Important step: After applying any new migrations, always remember to regenerate Supabase types by running
yarn db:gen-typesto keep the types in sync with the database schema.
The project uses Vitest as the test runner and React Testing Library for unit testing of React components.
To run the tests, use the following command:
yarn test
Other test-related commands include:
yarn test:coverage # Run all tests and generate coverage report
yarn test:watch # Run all tests in watch mode
yarn test:no-cache # Run all tests without cache
There are two types of linting in the project: JavaScript/TypeScript linting and SQL linting.
The project uses ESLint v10 with a custom flat config for linting. To run ESLint, use the following command:
yarn eslint:check # Check for linting errors
yarn eslint:fix # Fix linting errors
In addition to ESLint, the project uses SQLFluff for linting SQL queries under supabase directory. To run SQLFluff (Docker required), use the following command:
yarn lint:sql # Lint SQL queries
yarn fix:sql # Find fixable linting violations in SQL queries and apply fixes
The project uses Prettier for formatting. To run Prettier, use the following command:
yarn prettier:check # Check for formatting errors
yarn prettier:write # Fix formatting errors
To create a local production-like build of the app, run the following command:
yarn build
You can run the production build locally using the following command:
yarn preview
The project uses GitHub Actions for CI/CD.
When you open a pull request, the following checks are run:
All checks but the last one must pass before merging a pull request.
When a pull request is merged to the main branch, the following checks are run:
Contributions are welcome! Feel free to open issues or pull requests for any improvements, bug fixes, or new features.