{"id":20120345,"url":"https://github.com/svetlanam/kocici-menu","last_synced_at":"2026-05-01T21:33:15.467Z","repository":{"id":38244606,"uuid":"347081435","full_name":"SvetlanaM/kocici-menu","owner":"SvetlanaM","description":"Web application that helps people manage to cat food based on cat preferences, price, quality or other attributes","archived":false,"fork":false,"pushed_at":"2024-05-26T01:27:56.000Z","size":8284,"stargazers_count":0,"open_issues_count":32,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-02T08:52:09.699Z","etag":null,"topics":["animals","cats","graphql","hasura-graphql","kompilator","netlify","netlify-identity","reactgirls","reactjs","typescript","web"],"latest_commit_sha":null,"homepage":"https://kocicimenu.cz/","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/SvetlanaM.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}},"created_at":"2021-03-12T13:48:49.000Z","updated_at":"2022-05-08T20:00:15.000Z","dependencies_parsed_at":"2023-01-30T22:46:01.031Z","dependency_job_id":"a187f010-4da8-4974-829a-1c2f619e8fe4","html_url":"https://github.com/SvetlanaM/kocici-menu","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SvetlanaM%2Fkocici-menu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SvetlanaM%2Fkocici-menu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SvetlanaM%2Fkocici-menu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SvetlanaM%2Fkocici-menu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SvetlanaM","download_url":"https://codeload.github.com/SvetlanaM/kocici-menu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241564555,"owners_count":19982960,"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":["animals","cats","graphql","hasura-graphql","kompilator","netlify","netlify-identity","reactgirls","reactjs","typescript","web"],"created_at":"2024-11-13T19:19:44.161Z","updated_at":"2025-10-20T05:16:22.685Z","avatar_url":"https://github.com/SvetlanaM.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Kočičí Menu 🐱🍽️  \n\nA web‑application that helps cat owners keep track of what their cats love (or hate) to eat, compare product quality \u0026 price, and plan pantry supplies in a smarter way.\n\nLive demo » **https://www.kocicimenu.cz**  \nDemo credentials: **admin@kocicimenu.cz / Admin12345**\n\n---\n\n## Features\n* Add and manage **multiple cats**\n* **Review** every food your cats have tried\n* Track review history with **interactive charts**\n* **Recommendation engine** suggesting products that fit each cat’s taste \u0026 nutrition profile\n* Powerful **search, filter \u0026 sort** across hundreds of products\n* **Nutrition tips** and vet contacts in one place\n* Personal **activity statistics** and supply planning dashboard\n\n## Tech stack\n| Layer | Technology |\n|-------|------------|\n| Front‑end | **Next.js 11** · React 17 · TypeScript · Tailwind CSS |\n| Data | Apollo Client · **Hasura GraphQL** engine |\n| State / hooks | React Hook Form · React Context |\n| Auth | Netlify Identity · JSON Web Tokens |\n| Uploads | Amazon S3 via `next‑s3-upload` |\n| Charts | Chart.js + react‑chartjs‑2 |\n| Tooling | ESLint · Prettier · GraphQL Codegen · Husky |\n| CI/CD | Netlify Build Plugins |\n\n## Architecture overview\n```text\nBrowser ─┬─▶ Next.js pages / API routes\n         │\n         ├─▶ Apollo Client (GraphQL queries \u0026 mutations)\n         │\n         └─▶ Netlify Functions (server‑side auth, S3 upload‑sign)\n                      │\n                      ▼\n            Hasura GraphQL ⇄ PostgreSQL\n```\n\n---\n\n## Getting started\n\n### Prerequisites\n* **Node.js 16 LTS** (or newer)\n* **Yarn** (recommended) or npm\n* Access to a **Hasura** instance (cloud or local) containing the project schema\n* (Optional) **Docker \u0026 Docker Compose** if you prefer containerised setup\n\n### Local development\n```bash\n# 1. Clone repository\n$ git clone https://github.com/SvetlanaM/kocici-menu.git\n$ cd kocici-menu\n\n# 2. Configure environment\n$ cp .env.example .env   # then edit .env and fill in secrets\n\n# 3. Install dependencies\n$ yarn install --frozen-lockfile\n\n# 4. Snapshot GraphQL schema \u0026 generate typed hooks\n$ yarn introspect   # requires HASURA_ENDPOINT \u0026 HASURA_PASSWORD\n$ yarn codegen\n\n# 5. Start development server\n$ yarn dev\n# App running at http://localhost:3000\n```\n\n### Docker\n1. **Build the image**\n   ```bash\n   docker build -t kocici-menu .\n   ```\n2. **Run the container** (reads variables from your existing `.env` file):\n   ```bash\n   docker run --env-file .env -p 3000:3000 kocici-menu\n   ```\n\n\u003e **Tip:** A minimal `docker-compose.yml` is included below for convenience. Feel free to extend it with a Postgres + Hasura service when developing offline.\n\n```yaml\nversion: \"3.9\"\nservices:\n  web:\n    build: .\n    ports:\n      - \"3000:3000\"\n    env_file: .env\n    restart: unless-stopped\n```\n\n---\n\n## Environment variables\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `HASURA_ENDPOINT` | ✅ | URL of your Hasura GraphQL endpoint (`https://…/v1/graphql`) |\n| `HASURA_PASSWORD` | ✅ | Hasura admin secret used by `yarn introspect` |\n| `NEXT_PUBLIC_HASURA_PASSWORD` |  | Exposes password in browser (use **only** in trusted dev env) |\n| `NEXT_PUBLIC_CAT_APP_TESTING_API_ENDPOINT` |  | Mock API endpoint for end‑to‑end tests |\n| `S3_UPLOAD_REGION` / `NEXT_PUBLIC_S3_UPLOAD_REGION` | ✅ if uploads | AWS region, e.g. `eu-central-1` |\n| `S3_UPLOAD_BUCKET` / `NEXT_PUBLIC_S3_UPLOAD_BUCKET` | ✅ if uploads | S3 bucket name |\n| `S3_UPLOAD_KEY` / `NEXT_PUBLIC_S3_UPLOAD_KEY` | ✅ if uploads | IAM access key |\n| `S3_UPLOAD_SECRET` / `NEXT_PUBLIC_S3_UPLOAD_SECRET` | ✅ if uploads | IAM secret |\n| `NEXT_PUBLIC_GOOGLE_ANALYTICS` |  | GA‑4 measurement ID |\n| `SITE_URL` / `NEXT_PUBLIC_WEBSITE_URL` |  | Fully‑qualified URL used by `next‑sitemap` |\n\nCreate a **`.env`** file and define the variables that apply to your environment. Values prefixed with `NEXT_PUBLIC_` are exposed client‑side; keep secrets on the server side only.\n\n---\n\n## Project scripts\n| Script | What it does |\n|--------|--------------|\n| `yarn dev` | Run Next.js in development mode with hot‑reload |\n| `yarn build` | Build the production bundle (`.next/`) |\n| `yarn start` | Start production server (needs `yarn build` first) |\n| `yarn lint` | ESLint + TypeScript checks |\n| `yarn introspect` | Download latest Hasura schema into `schema.graphql` |\n| `yarn codegen` | Generate typed Apollo hooks in `graphql/generated/` |\n\n---\n\n## Deployment (Netlify)\nThe repository is pre‑configured for Netlify:\n1. Set the **environment variables** in *Site Settings → Build \u0026 Deploy → Environment*.\n2. Netlify will run `yarn introspect \u0026\u0026 yarn codegen \u0026\u0026 yarn build` automatically (see `netlify.toml`).\n3. SSR pages are handled by the official **@netlify/plugin‑nextjs** plugin.\n\n---\n\n## Contributing\nContributions, bug reports and cat memes are welcome! Fork the repo, create a feature branch and open a pull request.\n\n---\n\n## License\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsvetlanam%2Fkocici-menu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsvetlanam%2Fkocici-menu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsvetlanam%2Fkocici-menu/lists"}