{"id":36990702,"url":"https://github.com/mattdecrevel/size-charts","last_synced_at":"2026-01-13T23:39:05.016Z","repository":{"id":329148438,"uuid":"1113871966","full_name":"mattdecrevel/size-charts","owner":"mattdecrevel","description":"Open-source size chart management system for e-commerce. Create, manage, and embed size charts with a REST API and embeddable widget.","archived":false,"fork":false,"pushed_at":"2025-12-18T03:30:36.000Z","size":2139,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-21T04:29:20.956Z","etag":null,"topics":["clothing","ecommerce","nextjs","prisma","size-chart","sizes","sizing-guide","typescript"],"latest_commit_sha":null,"homepage":"https://www.sizecharts.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/mattdecrevel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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},"funding":{"github":"mattdecrevel","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2025-12-10T15:24:55.000Z","updated_at":"2025-12-18T03:28:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mattdecrevel/size-charts","commit_stats":null,"previous_names":["mattdecrevel/size-charts"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/mattdecrevel/size-charts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattdecrevel%2Fsize-charts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattdecrevel%2Fsize-charts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattdecrevel%2Fsize-charts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattdecrevel%2Fsize-charts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mattdecrevel","download_url":"https://codeload.github.com/mattdecrevel/size-charts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattdecrevel%2Fsize-charts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28399661,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T14:36:09.778Z","status":"ssl_error","status_checked_at":"2026-01-13T14:35:19.697Z","response_time":56,"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":["clothing","ecommerce","nextjs","prisma","size-chart","sizes","sizing-guide","typescript"],"created_at":"2026-01-13T23:39:04.325Z","updated_at":"2026-01-13T23:39:05.008Z","avatar_url":"https://github.com/mattdecrevel.png","language":"TypeScript","funding_links":["https://github.com/sponsors/mattdecrevel"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Size Charts\n\n**Open-source size chart management for e-commerce**\n\n[![Live Demo](https://img.shields.io/badge/demo-live-brightgreen)](https://www.sizecharts.dev)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![GitHub stars](https://img.shields.io/github/stars/mattdecrevel/size-charts?style=social)](https://github.com/mattdecrevel/size-charts)\n\n[Live Demo](https://www.sizecharts.dev) · [Documentation](https://www.sizecharts.dev/docs) · [Report Bug](https://github.com/mattdecrevel/size-charts/issues)\n\n\u003c/div\u003e\n\n---\n\nA production-ready size chart system with an admin panel, REST API, and embeddable widget. Built for e-commerce platforms that need to manage clothing, footwear, and accessory sizing.\n\n\u003cdiv align=\"center\"\u003e\n\n![Size Charts Homepage](docs/images/homepage.png)\n\n\u003c/div\u003e\n\n## Features\n\n| Feature | Description |\n|---------|-------------|\n| **Spreadsheet Editor** | Excel-like editing with keyboard navigation |\n| **Multi-Category** | One chart can appear in multiple categories |\n| **Dual Units** | All measurements in inches + centimeters |\n| **REST API** | Full CRUD with OpenAPI documentation |\n| **Embeddable Widget** | One script tag, zero dependencies |\n| **API Keys** | Scoped authentication with rate limiting |\n| **Dark Mode** | Full dark mode support |\n| **Templates** | Pre-built charts for common use cases |\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"docs/images/admin-editor.png\" alt=\"Admin Editor\" width=\"80%\"\u003e\n\n*Spreadsheet-style editor with inline editing and keyboard navigation*\n\n\u003c/div\u003e\n\n## Quick Start\n\n### Option 1: Deploy to Vercel (Recommended)\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/mattdecrevel/size-charts\u0026env=DATABASE_URL\u0026envDescription=PostgreSQL%20connection%20string\u0026envLink=https://github.com/mattdecrevel/size-charts%23environment-variables)\n\n1. Click the button above\n2. Connect a PostgreSQL database ([Neon](https://neon.tech), [Supabase](https://supabase.com), or [Railway](https://railway.app))\n3. Set `DATABASE_URL` environment variable\n4. Deploy!\n\n### Option 2: Local Development\n\n```bash\n# Clone and install\ngit clone https://github.com/mattdecrevel/size-charts.git\ncd size-charts\nnpm install\n\n# Setup database\ncp .env.example .env\n# Edit .env with your DATABASE_URL\n\n# Initialize and seed\nnpm run db:push\nnpm run db:seed\n\n# Start dev server\nnpm run dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000)\n\n## Usage\n\n### Embed Widget\n\nAdd size charts to any website with one script tag:\n\n```html\n\u003cdiv data-chart=\"mens-tops\"\u003e\u003c/div\u003e\n\u003cscript src=\"https://www.sizecharts.dev/embed/size-charts.js\"\n        data-api=\"https://www.sizecharts.dev\"\u003e\n\u003c/script\u003e\n```\n\n### REST API\n\n```bash\n# Get all size charts\ncurl https://www.sizecharts.dev/api/v1/size-charts\n\n# Get specific chart\ncurl https://www.sizecharts.dev/api/v1/size-charts?slug=mens-tops\n\n# With authentication (when enabled)\ncurl -H \"X-API-Key: sc_live_xxxx\" \\\n  https://www.sizecharts.dev/api/v1/size-charts\n```\n\nSee [API Documentation](https://www.sizecharts.dev/docs/api) for all endpoints.\n\n## Tech Stack\n\n- **Framework**: [Next.js 16](https://nextjs.org/) (App Router)\n- **Language**: [TypeScript 5](https://www.typescriptlang.org/)\n- **Database**: [PostgreSQL](https://www.postgresql.org/) + [Prisma 7](https://www.prisma.io/)\n- **Styling**: [Tailwind CSS 4](https://tailwindcss.com/) + [shadcn/ui](https://ui.shadcn.com/)\n- **State**: [TanStack Query](https://tanstack.com/query)\n\n## Environment Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `DATABASE_URL` | Yes | PostgreSQL connection string |\n| `DEMO_MODE` | No | Enable public demo mode (`true`/`false`) |\n| `ADMIN_USERNAME` | No | Admin panel username (if not demo mode) |\n| `ADMIN_PASSWORD` | No | Admin panel password (if not demo mode) |\n| `API_AUTH_REQUIRED` | No | Require API key authentication |\n| `CORS_ALLOWED_ORIGINS` | No | Allowed CORS origins (comma-separated) |\n\nSee [.env.example](.env.example) for all options.\n\n## Project Structure\n\n```\napp/\n├── (marketing)/     # Landing page, docs, examples\n├── (app)/\n│   ├── admin/       # Admin panel\n│   └── size-guide/  # Public size guide\n└── api/\n    ├── v1/          # Public REST API\n    └── admin/       # Admin endpoints\n\ncomponents/\n├── admin/           # Admin UI components\n├── public/          # Public-facing components\n└── ui/              # shadcn/ui components\n\nprisma/\n├── schema.prisma    # Database schema\n├── seed.ts          # Sample data\n└── templates/       # Chart templates\n```\n\n## Development\n\n```bash\nnpm run dev          # Start dev server\nnpm run build        # Production build\nnpm run lint         # Run linter\nnpm run typecheck    # Type check\nnpm run test:run     # Run tests\nnpm run test:e2e     # Run E2E tests\nnpm run db:studio    # Open Prisma Studio\nnpm run build:analyze # Analyze bundle size\n```\n\n## Self-Hosting\n\nThis project is designed to be self-hostable. To run as a standalone service:\n\n1. **Remove marketing content** (optional):\n   - Delete `app/(marketing)/` for a minimal installation\n   - The admin panel, API, and size guide will continue to work\n\n2. **Configure authentication**:\n   - Set `DEMO_MODE=false`\n   - Set `ADMIN_USERNAME` and `ADMIN_PASSWORD`\n   - Optionally enable `API_AUTH_REQUIRED=true`\n\n3. **Deploy**:\n   - Docker: `docker build -t size-charts . \u0026\u0026 docker run -p 3000:3000 size-charts`\n   - Node: `npm run build \u0026\u0026 npm start`\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/my-feature`\n3. Make your changes\n4. Run tests: `npm run test:run \u0026\u0026 npm run lint`\n5. Submit a pull request\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**[Website](https://www.sizecharts.dev)** · **[Documentation](https://www.sizecharts.dev/docs)** · **[GitHub](https://github.com/mattdecrevel/size-charts)**\n\nBuilt with [Next.js](https://nextjs.org/) · UI by [shadcn/ui](https://ui.shadcn.com/) · Database by [Prisma](https://www.prisma.io/)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattdecrevel%2Fsize-charts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmattdecrevel%2Fsize-charts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattdecrevel%2Fsize-charts/lists"}