{"id":23483686,"url":"https://github.com/cosimochellini/purranormal-activity","last_synced_at":"2026-05-07T03:39:33.490Z","repository":{"id":268951493,"uuid":"905968261","full_name":"cosimochellini/purranormal-activity","owner":"cosimochellini","description":"A whimsical Next.js 15 + TypeScript app to log and track supernatural events caused by your enchanted kitten and its frightened chick companion. Powered by AI image generation, magical transitions, and a dash of mischief.","archived":false,"fork":false,"pushed_at":"2025-02-11T14:49:04.000Z","size":10658,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-14T00:16:21.835Z","etag":null,"topics":["cloudflare","nextjs","openai","typescript"],"latest_commit_sha":null,"homepage":"https://purranormal-activity.pages.dev/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cosimochellini.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2024-12-19T22:01:07.000Z","updated_at":"2025-02-11T14:49:08.000Z","dependencies_parsed_at":"2024-12-19T23:20:22.150Z","dependency_job_id":"19912c65-10da-4976-9087-a9e7dc1ae3e2","html_url":"https://github.com/cosimochellini/purranormal-activity","commit_stats":null,"previous_names":["cosimochellini/purranormal-activity"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosimochellini%2Fpurranormal-activity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosimochellini%2Fpurranormal-activity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosimochellini%2Fpurranormal-activity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosimochellini%2Fpurranormal-activity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cosimochellini","download_url":"https://codeload.github.com/cosimochellini/purranormal-activity/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248799951,"owners_count":21163404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cloudflare","nextjs","openai","typescript"],"created_at":"2024-12-24T21:13:59.542Z","updated_at":"2026-05-07T03:39:33.484Z","avatar_url":"https://github.com/cosimochellini.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Purranormal Activity\n\nTrack magical mishaps and spooky shenanigans of an enchanted kitten. This project is now powered by TanStack Start and deployed on Cloudflare Workers.\n\n![Hero](https://raw.githubusercontent.com/cosimochellini/purranormal-activity/refs/heads/main/images/hero.webp)\n\n## Live\n\n- Production: [https://purranormal-activity.workers.dev](https://purranormal-activity.workers.dev)\n\n## Stack\n\n- Framework: [TanStack Start](https://tanstack.com/start) + [TanStack Router](https://tanstack.com/router)\n- Runtime/Deploy: [Cloudflare Workers](https://developers.cloudflare.com/workers/)\n- Build tool: [Vite](https://vite.dev/)\n- Language: [TypeScript](https://www.typescriptlang.org/)\n- DB: [Turso](https://turso.tech/) + [Drizzle ORM](https://orm.drizzle.team/)\n- Styling: [Tailwind CSS](https://tailwindcss.com/)\n- Lint/format: [Biome](https://biomejs.dev/)\n\n## Requirements\n\n- Node.js `22.x`\n- `pnpm`\n\n## Setup\n\n1. Install dependencies:\n\n```bash\npnpm install\n```\n\n2. Create local env file:\n\n```bash\ncp .env.example .env\n```\n\n3. Fill `.env` with required values.\n\n## Development\n\nRun dev server (keeps current project behavior with patch version bump):\n\n```bash\npnpm dev\n```\n\nIf you need to skip the automatic version bump, run Vite directly:\n\n```bash\nvite dev\n```\n\nDefault local URL is shown in terminal (typically `http://localhost:3000`).\n\n## Scripts\n\n- `pnpm lint` - run Biome checks\n- `pnpm format` - format code\n- `pnpm lint:fix` - apply Biome fixes\n- `pnpm build` - production build (TanStack Start / Vite)\n- `pnpm preview` - preview built app locally\n- `pnpm cf-typegen` - generate Worker env types from Wrangler config\n- `pnpm deploy` - build and deploy to Cloudflare Workers (no manual pre-build required)\n\n## Cloudflare Workers\n\n- Project config: [`wrangler.jsonc`](./wrangler.jsonc)\n- Deploy script uses generated build config: `dist/server/wrangler.json`\n- Worker name: `purranormal-activity`\n\nManual deploy alternative:\n\n```bash\npnpm run build:start\nwrangler deploy --config dist/server/wrangler.json\n```\n\nDry-run deploy:\n\n```bash\nwrangler deploy --dry-run --config dist/server/wrangler.json\n```\n\n## Core Routes\n\n- `/`\n- `/explore`\n- `/new`\n- `/:id`\n- `/:id/edit`\n- `/api/*` internal routes\n\n## Manual QA\n\nSee: [`wiki/manual-test.md`](./wiki/manual-test.md)\n\n## License\n\nMIT. See [LICENSE](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcosimochellini%2Fpurranormal-activity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcosimochellini%2Fpurranormal-activity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcosimochellini%2Fpurranormal-activity/lists"}