{"id":50968470,"url":"https://github.com/hellstromsamuel/budsjettet-web","last_synced_at":"2026-06-18T23:02:51.456Z","repository":{"id":365058454,"uuid":"1269874683","full_name":"hellstromsamuel/budsjettet-web","owner":"hellstromsamuel","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-15T16:58:58.000Z","size":98,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-15T18:23:11.357Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/hellstromsamuel.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":"2026-06-15T07:16:15.000Z","updated_at":"2026-06-15T16:59:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hellstromsamuel/budsjettet-web","commit_stats":null,"previous_names":["hellstromsamuel/budsjettet-web"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/hellstromsamuel/budsjettet-web","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellstromsamuel%2Fbudsjettet-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellstromsamuel%2Fbudsjettet-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellstromsamuel%2Fbudsjettet-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellstromsamuel%2Fbudsjettet-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hellstromsamuel","download_url":"https://codeload.github.com/hellstromsamuel/budsjettet-web/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellstromsamuel%2Fbudsjettet-web/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34510287,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-06-18T23:02:50.710Z","updated_at":"2026-06-18T23:02:51.451Z","avatar_url":"https://github.com/hellstromsamuel.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Budsjettet\n\nA personal budgeting web app built with React, TypeScript, and Vite.\n\n## Stack\n\n- **React 19** + **TypeScript** + **Vite**\n- **TailwindCSS v4** with a custom OKLCH color theme\n- **shadcn/ui** component library\n- **TanStack Router** — file-based routing (routes live in `src/routes/`)\n- **TanStack Query** — server state and data fetching\n- **Supabase** — database and auth backend\n- **Zustand** — client-side state management\n\n## Getting started\n\n```bash\nnpm install\nnpm run dev\n```\n\nCopy `.env.example` to `.env.local` and fill in your Supabase credentials:\n\n```\nVITE_SUPABASE_URL=https://\u003cproject-ref\u003e.supabase.co\nVITE_SUPABASE_PUBLISHABLE_KEY=sb_publishable_...\n```\n\n## Routing\n\nRoutes are file-based via `@tanstack/router-plugin`. Add a file under `src/routes/` and it's automatically picked up — `routeTree.gen.ts` is auto-generated on `npm run dev` or `npm run build`.\n\n| File | Route |\n|------|-------|\n| `src/routes/__root.tsx` | Root layout |\n| `src/routes/index.tsx` | `/` |\n\n## Supabase\n\nThe client is initialised in `src/lib/supabase.ts` and exported as `supabase`. Import it wherever you need database or auth access:\n\n```ts\nimport { supabase } from '@/lib/supabase'\n```\n\n## Auth\n\nAuthentication uses Supabase with Google OAuth. The user clicks \"Logg inn med Google\", gets redirected to Google's consent screen, and is sent back to the app with an active session. Session state is reactive — components re-render automatically on sign-in and sign-out.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhellstromsamuel%2Fbudsjettet-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhellstromsamuel%2Fbudsjettet-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhellstromsamuel%2Fbudsjettet-web/lists"}