{"id":33566887,"url":"https://github.com/zidvsd/stash","last_synced_at":"2026-04-12T00:02:02.207Z","repository":{"id":324530841,"uuid":"1097243193","full_name":"zidvsd/stash","owner":"zidvsd","description":"Finance Tracker App","archived":false,"fork":false,"pushed_at":"2025-11-25T12:46:11.000Z","size":395,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-28T00:47:52.379Z","etag":null,"topics":["eslint","lucide-icons","motion","nextjs","radix-ui","reactjs","recharts","shadcn-ui","sonner","supabase","supabase-auth","supabase-db","tailwindcss","tailwindcss-v4","typescript","zustand"],"latest_commit_sha":null,"homepage":"https://stash-lemon.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zidvsd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-15T19:58:01.000Z","updated_at":"2025-11-25T12:46:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zidvsd/stash","commit_stats":null,"previous_names":["zidvsd/stash"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zidvsd/stash","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zidvsd%2Fstash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zidvsd%2Fstash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zidvsd%2Fstash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zidvsd%2Fstash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zidvsd","download_url":"https://codeload.github.com/zidvsd/stash/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zidvsd%2Fstash/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31699438,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T21:17:31.016Z","status":"ssl_error","status_checked_at":"2026-04-11T21:17:24.556Z","response_time":54,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eslint","lucide-icons","motion","nextjs","radix-ui","reactjs","recharts","shadcn-ui","sonner","supabase","supabase-auth","supabase-db","tailwindcss","tailwindcss-v4","typescript","zustand"],"created_at":"2025-11-28T04:04:36.739Z","updated_at":"2026-04-12T00:02:02.196Z","avatar_url":"https://github.com/zidvsd.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Stash\n\n![version](https://img.shields.io/badge/version-0.1.0-blue)\n\nA small personal finance tracker built with Next.js, Supabase and Tailwind CSS. Stash lets you record expenses, view recent transactions, and analyze spending with charts.\n\n**Tech stack**: Next.js 16 · React 19 · Tailwind CSS 4 · Supabase · Recharts · Zustand\n\n---\n\n## Demo\n\nhttps://stash-lemon.vercel.app/\n\n---\n\n## What this project does\n\nStash is a simple expense tracker web application that helps you:\n\n- Add and manage expenses (category, amount, note, date)\n- View recent expenses in a responsive table\n- Analyze spending with charts (pie chart by category, other visualizations)\n- Persist data using Supabase (Postgres + auth)\n\n**Project layout (key folders):**\n\n- `app/` – Next.js App Router pages and layouts\n- `components/` – UI components (cards, forms, charts, nav, theme toggle)\n- `components/charts` – Recharts-based chart components (Pie, Line)\n- `lib/` – utilities, categories, currencies and supabase helpers\n- `store/` – lightweight client state (Zustand)\n\n---\n\n## Why it’s useful\n\n- Lightweight, opinionated starter for building personal finance or expense tracking apps\n- Ready-made UI components and charts so you can focus on features\n- Uses Supabase for quick backend (no server code required for many features)\n- Easy to extend: add budgets, recurring payments, reports\n\n---\n\n## Quick Start\n\n### Prerequisites\n\n- Node.js 18+ (tested on Node 18/20)\n- npm or pnpm\n- A Supabase project (for database and optional authentication)\n\n### Steps\n\n1. Clone the repo\n\n```bash\ngit clone \u003cyour-repo-url\u003e stash\ncd stash\n```\n\n2. Install dependencies\n\n```bash\nnpm install\n# or\n# pnpm install\n```\n\n3. Configure environment variables\n\nCreate a `.env.local` file in the project root with the following (replace with your Supabase values):\n\n```env\n# Supabase (client)\nNEXT_PUBLIC_SUPABASE_URL=https://xyzcompany.supabase.co\nNEXT_PUBLIC_SUPABASE_ANON_KEY=public-anon-key\n```\n\nNotes:\n\n- `lib/supabase/client.ts` uses `createBrowserClient` and reads these `NEXT_PUBLIC_*` values.\n- For server-side Supabase usage (if added), you may also need `SUPABASE_SERVICE_ROLE_KEY` or similar server keys, but this starter only requires the public client keys for the browser.\n\n4. Run the development server\n\n```bash\nnpm run dev\n# Open http://localhost:3000\n```\n\n5. Build for production\n\n```bash\nnpm run build\nnpm run start\n```\n\n---\n\n## Pages \u0026 Usage\n\n- `/` – landing / dashboard\n- `/add-expense` – add an expense\n- `/analytics` – charts and spending breakdown\n- `/profile` – user profile (backed by Supabase profile helpers)\n- `app/(auth)/login` and `app/(auth)/signin` – auth flows\n\n**Components you’ll likely edit or reuse:**\n\n- `components/AddExpenseForm.tsx` – the expense entry form\n- `components/charts/*` – Recharts chart components (PieChart, LineChart)\n- `components/theme-provider.tsx` and `components/DarkModeToggle.tsx` – theme handling\n\n**Examples**\n\n- Adding an expense stores it in Supabase via helpers in `lib/supabase/expenses.ts` and updates the local Zustand store in `store/expenseStore.ts`.\n- Charts are built with `recharts` inside `components/ui/chart.tsx` wrapper; to tweak animation or responsiveness, edit the chart components in `components/charts/`.\n\n---\n\n## Environment \u0026 Deployment Notes\n\n- This app is built for static+serverless environments (Vercel, Netlify). When deploying, set the same environment variables (`NEXT_PUBLIC_SUPABASE_URL`, `NEXT_PUBLIC_SUPABASE_ANON_KEY`) in your host.\n- For true server-side Supabase usage add server-only service role keys as secure environment variables.\n\n---\n\n## Troubleshooting / Common Gotchas\n\n- If charts or animations stutter, try setting an explicit height on the chart container (see `components/charts/PieChart.tsx`) or adjust Recharts `animationDuration`.\n- If theme or color variables change instantly (no transition), ensure Tailwind CSS and global styles (`app/globals.css`) include transitions for `background-color`, `color`, and `border-color`.\n- If Supabase calls fail in the browser, confirm `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_ANON_KEY` are correct and not empty.\n\n---\n\n## Where to get help\n\n- Open an issue in this repository\n- Submit a PR for bug fixes or features\n- If this project is used as a starter in your organization, keep an internal README with deployment steps and secrets management\n\n---\n\n## Maintenance \u0026 Contributing\n\n**Maintainer:** `zidvsd` (repository owner)\n\nIf you want to contribute:\n\n1. Fork the repo\n2. Create a descriptive branch (`feat/`, `fix/`, `docs/`)\n3. Add tests where applicable and keep changes focused\n4. Open a pull request with a clear description\n\nIf you plan to contribute regularly, consider adding a `CONTRIBUTING.md` file with repository-specific guidelines. This README intentionally keeps contribution steps brief — see `CONTRIBUTING.md` if present.\n\n---\n\n## License\n\nSee `LICENSE` in the repository root for license details (if present).\n\n---\n\n## Acknowledgements\n\n- Built with Next.js, Supabase and Tailwind CSS\n- UI patterns inspired by community components and shadcn/ui\n\nIf you'd like, I can also:\n\n- Add a short `CONTRIBUTING.md` template and `ISSUE_TEMPLATE.md`/`PULL_REQUEST_TEMPLATE.md` to the repo\n- Add a `docs/` folder with architecture notes and a small diagram\n\n---\n\nHappy hacking — open an issue or PR if you want any of the follow-ups above!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzidvsd%2Fstash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzidvsd%2Fstash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzidvsd%2Fstash/lists"}