{"id":23353411,"url":"https://github.com/directus-labs/os-santa","last_synced_at":"2026-02-08T11:33:00.418Z","repository":{"id":269097485,"uuid":"892826248","full_name":"directus-labs/os-santa","owner":"directus-labs","description":"Write a letter to Salty Open Source Santa to find out whether you made the the open source community naughty or nice list. ","archived":false,"fork":false,"pushed_at":"2024-12-20T21:42:09.000Z","size":4268,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-13T20:45:01.821Z","etag":null,"topics":["ai","directus","directus-template","nuxt","nuxt-ui","roast","typescript","vuejs"],"latest_commit_sha":null,"homepage":"https://salty-santa.vercel.app","language":"Vue","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/directus-labs.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},"funding":{"github":["directus"]}},"created_at":"2024-11-22T21:17:59.000Z","updated_at":"2025-01-28T11:23:32.000Z","dependencies_parsed_at":"2024-12-20T22:38:18.113Z","dependency_job_id":null,"html_url":"https://github.com/directus-labs/os-santa","commit_stats":null,"previous_names":["directus-labs/os-santa"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/directus-labs%2Fos-santa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/directus-labs%2Fos-santa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/directus-labs%2Fos-santa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/directus-labs%2Fos-santa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/directus-labs","download_url":"https://codeload.github.com/directus-labs/os-santa/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247713260,"owners_count":20983683,"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":["ai","directus","directus-template","nuxt","nuxt-ui","roast","typescript","vuejs"],"created_at":"2024-12-21T09:13:09.062Z","updated_at":"2026-02-08T11:32:55.398Z","avatar_url":"https://github.com/directus-labs.png","language":"Vue","funding_links":["https://github.com/sponsors/directus"],"categories":[],"sub_categories":[],"readme":"\u003ca href=\"https://directus.io\" target=\"_blank\"\u003e\n  \u003ch1 align=\"center\"\u003eOpen Source Santa\u003c/h1\u003e\n\u003c/a\u003e\n\n\u003cimg src=\"https://github.com/directus-labs/os-santa/blob/main/nuxt/public/images/screenshot.png?raw=true\" alt=\"Open Source Santa screenshot\" /\u003e\n\n\u003cp align=\"center\"\u003eA fun holiday project that uses AI to generate personalized roast letters from Salty Open Source Santa based on your GitHub open source contributions. Find out if you're on the naughty or nice list! 🎅\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cem\u003eBuilt with ❤️ by the \u003ca href=\"https://github.com/directus/directus\" target=\"_blank\"\u003eDirectus team\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#introduction\"\u003e\u003cstrong\u003eIntroduction\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#features\"\u003e\u003cstrong\u003eFeatures\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#tech-stack\"\u003e\u003cstrong\u003eTech Stack\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#setup-guide\"\u003e\u003cstrong\u003eSetup Guide\u003c/strong\u003e\u003c/a\u003e ·\n\u003c/p\u003e\n\n\u003cbr/\u003e\n\n# Introduction\n\nOpen Source Santa is a playful web application that analyzes GitHub profiles and generates AI-powered \"naughty or nice\" letters from Santa. Whether you want to check your own open source karma or roast a friend, Santa's got opinions about everyone's commits!\n\nLearn how the project was built on the [Directus Developer Blog](https://docs.directus.io/blog/ai-santa-roast-app-with-directus-nuxt).\n\n# Features\n\n- 🎅 Generate AI-powered roast letters from Santa based on GitHub public profile data\n- 🎄 Check if you're on the naughty or nice list\n- 🎁 Write letters for yourself or roast your friends\n- 🌟 Beautiful particle snow effects and holiday theming\n- 🔊 Fun sound effects\n- 🔒 GitHub OAuth authentication\n- 🖼️ Dynamic OG image generation\n\n# Tech Stack\n\n## Frontend\n- [Nuxt 3](https://nuxt.com) - Vue.js Framework\n- [Nuxt UI v3-alpha](https://ui.nuxt.com/) - UI Component Library\n- [Tailwind CSS v4-beta](https://tailwindcss.com) - Utility-first CSS\n- [VueUse](https://vueuse.org) - Vue Composition Utilities\n- [tsParticles](https://particles.js.org) - Particle Effects\n- [Vercel AI SDK](https://sdk.vercel.ai) - AI SDK\n\n## Backend\n- [Directus](https://directus.io) - Backend + CMS (Admin)\n- [Anthropic Claude](https://anthropic.com) - AI Text Generation\n- [PostgreSQL](https://www.postgresql.org) - Database\n\n# Setup Guide\n\n## 0. Prerequisites\n\n- [Node.js](https://nodejs.org) - v18.17.0 or higher\n- [pnpm](https://pnpm.io) - v9.0.0 or higher\n- [Docker](https://docker.com) - v25.0.0 or higher\n\nClone the repository and navigate to the root directory.\n\n```bash\ngit clone https://github.com/directus-labs/os-santa.git\ncd os-santa\n```\n\n## 1. Backend Setup (Directus)\n\n\u003cimg src=\"https://directus.io/images/logo-dark.svg\" alt=\"Directus Logo\" width=\"200\" /\u003e\n\nWe recommend you checkout the [Directus documentation](https://docs.directus.io/getting-started/quickstart/) for more information on how to setup and run Directus.\n\n### Option A: Directus Cloud (Recommended for Quick Start)\n1. Create an account at [Directus Cloud](https://directus.cloud?ref=directus-labs%2Fos-santa)\n2. Create a new trial project - choose the build from scratch option\n3. Once created, note your project URL and login credentials.\n4. Run the `directus-template-cli` tool to apply the template to your project. Replace the values with your specific project URL and login credentials.\n\n\t```bash\n\tcd directus\n\t```\n\t```bash\n\tnpx directus-template-cli@latest apply --directusUrl=\"your_directus_url\" --userEmail=\"your_email\" --userPassword=\"your_password\" --templateLocation=\"./template\" --templateType=\"local\"\n\t```\n\n5. Login to Directus and generate a static access token for the \"Santa's Helper\" user. Save the token for the environment variables.\n\n\t```env\n\tDIRECTUS_SERVER_TOKEN=your_directus_token\n\t```\n\n\n### Option B: Self-Hosted Setup\n1. Ensure you have docker installed and running on your machine. [Install Docker](https://docs.docker.com/get-docker/)\n\n2. Start the Directus instance using Docker:\n\n\t```bash\n\tcd directus\n\t```\n\n\t```bash\n\tdocker-compose up -d\n\t```\n\n3. Run the `directus-template-cli` tool to apply the template to your project. Replace the values with your specific project details.\n\n\t```bash\n\tnpx directus-template-cli@latest apply --directusUrl=\"http://localhost:8055\" --userEmail=\"admin@example.com\" --userPassword=\"d1r3ctus\" --templateLocation=\"./template\" --templateType=\"local\"\n\t```\n\n4. Login to Directus and generate a static access token for the \"Santa's Helper\" user. Save the token for the environment variables.\n\n\t```env\n\tDIRECTUS_SERVER_TOKEN=your_directus_token\n\t```\n\n## 2. GitHub OAuth Setup\n\n\u003cimg src=\"https://github.githubassets.com/assets/GitHub-Logo-ee398b662d42.png\" alt=\"GitHub Logo\" width=\"200\" /\u003e\n\n1. Go to [GitHub Developer Settings](https://github.com/settings/developers)\n2. Click \"New OAuth App\"\n3. Fill in the application details:\n   - Application name: \"Open Source Santa\" (or your preferred name)\n   - Homepage URL: `http://localhost:3000` (development) or your production URL\n   - Authorization callback URL: `http://localhost:3000/auth/github`\n4. Save the Client ID and Client Secret for environment variables\n\n\t```env\n\tGITHUB_CLIENT_ID=your_github_client_id\n\tGITHUB_CLIENT_SECRET=your_github_client_secret\n\t```\n\n### Generating a GitHub Token for GraphQL API\n\n1. Go to [GitHub Personal Access Tokens](https://github.com/settings/tokens)\n2. Click \"Generate new token\"\n3. Fill in the token details:\n   - Note: \"Open Source Santa GraphQL Access\" (or your preferred note)\n   - Expiration: Choose an appropriate expiration time\n   - Repository access: Public Repositories (read-only)\n5. Add the token to your environment variables:\n\n\t```env\n\tGITHUB_TOKEN=your_github_token\n\t```\n\n## 3. Anthropic API Setup\n\n\u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Anthropic_logo.svg/1600px-Anthropic_logo.svg.png\" alt=\"Anthropic Logo\" width=\"200\" /\u003e\n\n1. Create an account at [Anthropic](https://anthropic.com)\n2. Generate an API key from [your dashboard](https://console.anthropic.com/settings/keys)\n3. Save the API key for environment variables\n\n\t```env\n\tANTHROPIC_API_KEY=your_anthropic_api_key\n\t```\n\n## 4. Frontend (Nuxt) Setup\n\n\u003cimg src=\"https://nuxt.com/assets/design-kit/logo-green-black.svg\" alt=\"Nuxt Logo\" width=\"200\" /\u003e\n\n1. Install dependencies:\n\n\t```bash\n\tcd nuxt\n\t```\n\n\t```bash\n\tpnpm i\n\t```\n\n2. Copy the example environment file:\n\n\t```bash\n\tcp .env.example .env\n\t```\n\n3. Fill in your environment variables:\n\n\t```env\n\t# Directus Configuration\n\tDIRECTUS_URL=your_directus_url\n\tDIRECTUS_SERVER_TOKEN=your_directus_token\n\n\t# AI Generation\n\tANTHROPIC_API_KEY=your_anthropic_api_key\n\n\t# Site Configuration\n\tNUXT_PUBLIC_SITE_URL=http://localhost:3000\n\tNUXT_SESSION_PASSWORD=\"password-with-at-least-32-characters\"\n\tSALT=\"some-random-salt-string\"\n\n\t# Authentication\n\tGITHUB_TOKEN=your_github_token_for_graphql_api\n\tGITHUB_CLIENT_ID=your_github_client_id\n\tGITHUB_CLIENT_SECRET=your_github_client_secret\n\n\t# Analytics (Optional)\n\tPOSTHOG_API_KEY=your_posthog_api_key\n\tPOSTHOG_API_HOST=your_posthog_host\n\t```\n\n\tNote: PostHog analytics is optional and will be disabled in development mode. If you don't need product analytics, you can skip these environment variables.\n\n4. Generate Directus types:\n\n\tNOTE: Your Directus instance must be running for type generation to work.\n\n\t```bash\n\tpnpm generate:types\n\t```\n\n5. Start the development server:\n\n\t```bash\n\tpnpm dev\n\t```\n\n6. Visit `http://localhost:3000` in your browser\n\n## Common Issues and Troubleshooting\n\n### CORS Issues\nIf you're running into CORS issues with Directus, ensure your Directus instance has CORS properly configured. For development, you can add the following to your Directus environment:\n\nLearn more about [CORS in Directus](https://docs.directus.io/self-hosted/config-options.html#cors).\n\n```env\nCORS_ENABLED=true\nCORS_ORIGIN=http://localhost:3000\n```\n\n### Authentication Issues\n- Ensure your GitHub OAuth callback URL exactly matches your application setup\n- Verify your Directus token has admin access\n- Check that all environment variables are properly set\n\n# 🛟 Community Help\nFor community help or support with Directus itself, please see the Directus Discord server.\n\n- **[Directus Discord](https://discord.com/invite/directus)** – Join over 10k+ developers and community members to ask\n  questions and live discussion around Directus.\n\n# ❤️ Contributing\n\nHere's how you can contribute:\n\n- [Open an issue](https://github.com/directus-labs/os-santa/issues) if you believe you've encountered a bug.\n- Please open an issue before submitting any PRs for new features or improvements.\n\n## 🙏 Thanks To\n\n- Our other awesome core team members at [Directus](https://directus.io) who helped test and provide feedback.\n- [joshwcomeau](https://github.com/joshwcomeau) for the idea and logic behind the spice-meter / like button.\n- [codenoid/github-roast](https://github.com/codenoid/github-roast) for additional inspiration of the GitHub roast idea.\n\n# License\n\nThis project is open source and available under the MIT License. See the [LICENSE](LICENSE) file for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdirectus-labs%2Fos-santa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdirectus-labs%2Fos-santa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdirectus-labs%2Fos-santa/lists"}