{"id":51013457,"url":"https://github.com/trycourier/basic-demo","last_synced_at":"2026-06-21T06:31:41.809Z","repository":{"id":315223527,"uuid":"1052993618","full_name":"trycourier/basic-demo","owner":"trycourier","description":"A basic demo of the Courier Platform, showcasing major features. ","archived":false,"fork":false,"pushed_at":"2026-01-13T21:08:50.000Z","size":1211,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-13T21:39:36.540Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://basic-demo-omega.vercel.app","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/trycourier.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-08T20:51:09.000Z","updated_at":"2026-01-13T21:08:56.000Z","dependencies_parsed_at":"2025-09-17T12:00:19.067Z","dependency_job_id":"101e72f9-d150-4dac-a2c4-ec55c3d2ae73","html_url":"https://github.com/trycourier/basic-demo","commit_stats":null,"previous_names":["trycourier/basic-demo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/trycourier/basic-demo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycourier%2Fbasic-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycourier%2Fbasic-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycourier%2Fbasic-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycourier%2Fbasic-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trycourier","download_url":"https://codeload.github.com/trycourier/basic-demo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trycourier%2Fbasic-demo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34597337,"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-21T02:00:05.568Z","response_time":54,"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-21T06:31:41.101Z","updated_at":"2026-06-21T06:31:41.801Z","avatar_url":"https://github.com/trycourier.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Courier Showcase - Courier v8 React SPA\n\nA React application showcasing Courier's core features using Courier React v8.2.0. Demonstrates Inbox, Template Designer, and Preferences with real Courier integration.\n\n## 🎯 What This Is\n\n- **React SPA** - Built with React 19, Material-UI, and Courier React v8.2.0\n- **Production Ready** - Uses real Courier APIs and authentication\n- **Vercel Deployed** - Static deployment with environment variables\n- **Courier Integration** - Live Inbox, Template Designer, and API demonstrations\n\n## 🚀 Quick Start\n\n### 1. Clone \u0026 Install\n```bash\ngit clone [your-repo]\ncd basic-demo\nnpm install\nnpm start\n```\n\n### 2. Configure Environment Variables\n\nCreate a `.env` file in the root directory:\n\n```bash\nREACT_APP_COURIER_USER_ID=your-courier-user-id\nREACT_APP_DEMO_JWT=your-jwt-token\nREACT_APP_DEMO_TENANT_ID=your-tenant-id\n```\n\n### 3. Generate JWT Token\n\nYou need a valid JWT token to authenticate with Courier. Generate one using:\n\n```bash\ncurl -X POST https://api.courier.com/auth/issue-token \\\n  -H \"Authorization: Bearer YOUR_COURIER_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"scope\": \"user_id:YOUR_USER_ID inbox:read:messages inbox:write:events\",\n    \"expires_in\": \"30 days\"\n  }'\n```\n\nSee `ENV_SETUP.md` for detailed instructions.\n\n## 🎨 Features\n\n- ✅ **Dashboard** - Overview of all Courier features\n- ✅ **Inbox** - Live Courier Inbox with real-time notifications\n- ✅ **Archived Notifications** - Example of fetching archived messages (v8 API)\n- ✅ **Template Designer** - Live Courier Create integration\n- ✅ **Preferences Viewer** - Notification preference display\n- ✅ **Courier v8.2.0** - Latest Courier React SDK\n- ✅ **Mobile Responsive** - Material-UI design system\n\n## 🔧 Architecture\n\n```\n/ (root)\n├── src/\n│   ├── pages/\n│   │   ├── Dashboard/                 # Main dashboard with feature cards\n│   │   ├── Inbox/                     # Courier Inbox component\n│   │   ├── ArchivedNotifications/     # Archived messages example\n│   │   ├── Designer/                  # Courier Create integration\n│   │   └── Preferences/               # Notification preferences\n│   ├── components/Layout/              # Navigation sidebar\n│   ├── App.tsx                        # Main app with routing\n│   └── index.tsx                      # Entry point\n├── public/                            # Static assets\n├── package.json                       # Dependencies\n├── tsconfig.json                      # TypeScript config\n├── vercel.json                        # Vercel deployment config\n├── ENV_SETUP.md                       # Environment setup guide\n└── README.md                          # This file\n```\n\n## 🔧 Configuration\n\n### Environment Variables\n| Variable | Description | Example |\n|----------|-------------|---------|\n| `REACT_APP_COURIER_USER_ID` | Courier user ID | `demo_user` |\n| `REACT_APP_DEMO_JWT` | JWT token for authentication | `eyJhbGciOiJIUzI1Ni...` |\n| `REACT_APP_DEMO_TENANT_ID` | Courier tenant ID (optional) | `tn_xxxxx...` |\n\n**⚠️ Important:** \n- JWT `user_id` scope must match `REACT_APP_COURIER_USER_ID`\n- JWT must have `inbox:read:messages` and `inbox:write:events` scopes\n- Generate JWT using the API (see ENV_SETUP.md)\n- JWT expires based on `expires_in` parameter when generating\n\n## 📱 Key Features\n\n- **Real Courier Integration** - Uses actual Courier APIs and authentication\n- **Latest SDK** - Built with Courier React v8.2.0\n- **Fast Loading** - Pure static assets on CDN\n- **Always Available** - No server maintenance required\n- **Professional Look** - Material-UI design system\n- **Archived Messages Example** - Demonstrates Courier v8 API usage\n\n## 🔄 Maintenance\n\n**JWT Token Refresh:**\n1. Generate new JWT using the curl command in ENV_SETUP.md\n2. Update `REACT_APP_DEMO_JWT` in environment variables\n3. Vercel auto-redeploys on environment changes\n\n**Changing User:**\n1. Update `REACT_APP_COURIER_USER_ID` in environment variables\n2. Regenerate JWT with matching `user_id:NEW_VALUE` in scope\n3. Update Vercel environment variables\n\n## 🚀 Vercel Deployment\n\n1. **Connect Repository** (GitHub/GitLab/Bitbucket)\n2. **Framework Preset:** `Vite` or `Other`\n3. **Root Directory:** `./` (auto-detect)\n4. **Environment Variables:** Add the 3 required variables\n5. **Deploy**\n\n**Vercel Configuration:**\n- Framework: React SPA\n- Build Command: `npm run build`\n- Output Directory: `build`\n- Install Command: `npm install`\n\n## 🆘 Troubleshooting\n\n**Inbox doesn't load:**\n- Check `REACT_APP_DEMO_JWT` is set correctly\n- Verify JWT hasn't expired\n- Check browser console for authentication errors\n\n**JWT errors:**\n- Verify `REACT_APP_DEMO_JWT` is exact token from API response\n- Check JWT hasn't expired  \n- Ensure JWT scope includes `inbox:read:messages` and other required permissions\n- Verify `REACT_APP_COURIER_USER_ID` matches the user_id in JWT scope\n\n**Designer doesn't load:**\n- Check `REACT_APP_DEMO_TENANT_ID` is set\n- Verify tenant ID matches your Courier account\n\n**General:**\n- Check all environment variables are set\n- Verify Courier account has necessary permissions\n- Check browser console for detailed error messages\n\n---\n\n**Built with Courier React v8.2.0** 🚀 **Production Ready** ✨","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrycourier%2Fbasic-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrycourier%2Fbasic-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrycourier%2Fbasic-demo/lists"}