{"id":28965325,"url":"https://github.com/crowdin/apps-quick-start-nextjs","last_synced_at":"2025-06-24T06:11:05.356Z","repository":{"id":300497403,"uuid":"986140138","full_name":"crowdin/apps-quick-start-nextjs","owner":"crowdin","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-20T13:56:11.000Z","size":134,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-22T03:15:41.438Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/crowdin.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}},"created_at":"2025-05-19T07:05:30.000Z","updated_at":"2025-06-20T13:56:49.000Z","dependencies_parsed_at":"2025-06-22T03:15:44.305Z","dependency_job_id":"9d48efff-d811-4b7b-ae8a-54dcc0631a67","html_url":"https://github.com/crowdin/apps-quick-start-nextjs","commit_stats":null,"previous_names":["crowdin/apps-quick-start-nextjs"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/crowdin/apps-quick-start-nextjs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowdin%2Fapps-quick-start-nextjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowdin%2Fapps-quick-start-nextjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowdin%2Fapps-quick-start-nextjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowdin%2Fapps-quick-start-nextjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crowdin","download_url":"https://codeload.github.com/crowdin/apps-quick-start-nextjs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowdin%2Fapps-quick-start-nextjs/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261618141,"owners_count":23185098,"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":[],"created_at":"2025-06-24T06:11:02.112Z","updated_at":"2025-06-24T06:11:05.339Z","avatar_url":"https://github.com/crowdin.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Crowdin Apps Quick Start: Next.js\n\nWelcome! This repository contains the source code for the sample application built in the **Crowdin [Quick Start](https://developer.crowdin.com/crowdin-apps-quick-start)** tutorial.\n\nThis project is an advanced sample application that demonstrates core concepts for building a production-ready Crowdin App.\n\n[**`Home`**](https://crowdin.com) | [**`Quick Start`**](https://developer.crowdin.com/crowdin-apps-quick-start) | [**`Developer Portal`**](https://developer.crowdin.com/)\n\n## About This Repository\n\nThis repository contains a sample application built with **Next.js** and **TypeScript**. It's designed to demonstrate key features and best practices for building a production-ready Crowdin App, featuring:\n\n- **Dynamic App Manifest**: Generating `manifest.json` based on environment variables.\n- **Project Menu Module**: Rendering a custom tab within a Crowdin project.\n- **Event Handling**: Securely processing `installed` and `uninstall` lifecycle events.\n- **JWT Middleware**: Verifying signed requests from Crowdin to protect API endpoints.\n- **Database Integration**: Using Prisma to persist organization credentials.\n- **Custom File Format**: Processing unique file types and generating live previews.\n- **Blob Storage**: Handling large data payloads efficiently with Vercel Blob.\n\n## Running Locally\n\nMake sure you have [Node.js (v18 or later)](https://nodejs.org/) installed.\n\n1. **Clone the repository:**\n\n```sh\ngit clone https://github.com/crowdin/apps-quick-start-nextjs.git\ncd apps-quick-start-nextjs\n```\n*To follow the tutorial from its starting point, check out the `v1.0-basic` tag:*\n```sh\ngit checkout v1.0-basic\n```\n\n2. **Install dependencies:**\n\nChoose your preferred package manager:\n```sh\n# Using npm\nnpm install\n\n# Or using pnpm\npnpm install\n```\n\n3. **Configure your environment:**\n\nCopy the example environment file. This file is ignored by Git, so it's safe for your credentials.\n```sh\ncp .env.example .env.local\n```\nNext, open `.env.local` in your editor and add the required values from your Crowdin OAuth application.\n\n4. **Run the development server:**\n\n```sh\n# Using npm\nnpm run dev\n\n# Or using pnpm\npnpm dev\n```\n\nYour application will be available at `http://localhost:3000`.\n\n## Deploying to Vercel\n\nThe easiest way to deploy your app is directly to the Vercel platform.\n\nClick the button below to clone this repository to your own GitHub account and deploy it to Vercel in one step:\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fcrowdin%2Fapps-quick-start-nextjs)\n\n### Configuring Environment Variables\n\nAfter the deployment process begins, Vercel will guide you to configure your project. You will need to add your environment variables.\n\n1. In the Vercel \"Configure Project\" view, expand the \"Environment Variables\" section.\n2. Copy the variables from your local `.env.local` file (or the `.env.example` template) and paste them into the Vercel dashboard.\n3. Ensure you update `NEXT_PUBLIC_BASE_URL` with your new production URL from Vercel (e.g., `https://your-app-name.vercel.app`).\n\nThis step is crucial for your deployed app to connect to Crowdin, your database, and other services.\n\n## Installing the App in Crowdin\n\nOnce deployed, install your app in Crowdin using the [manual installation](https://developer.crowdin.com/crowdin-apps-installation/) method:\n\n1. In Crowdin, go to your **Account Settings \u003e Apps**.\n2. Click **Install Private App**.\n3. Enter your manifest URL: `https://your-app-name.vercel.app/manifest.json`\n\nAfter installation, your app will be available in the project locations defined in your manifest.\n\n## Tech Stack\n\n- **Framework**: [Next.js](https://nextjs.org/) (App Router)\n- **Language**: [TypeScript](https://www.typescriptlang.org/)\n- **Styling**: [Tailwind CSS](https://tailwindcss.com/)\n- **ORM**: [Prisma](https://www.prisma.io/)\n- **Database**: PostgreSQL\n- **Deployment**: [Vercel](https://vercel.com/)\n- **Storage**: [Vercel Blob](https://vercel.com/storage/blob)\n\n## Resources\n\nFor more information on the technologies and APIs used in this project, see the following resources:\n\n- [Crowdin Developer Portal](https://developer.crowdin.com/)\n- [Crowdin API Reference](https://developer.crowdin.com/api/v2/)\n- [Crowdin Apps SDK](https://crowdin.github.io/app-project-module/)\n- [Next.js Documentation](https://nextjs.org/docs)\n- [Vercel Documentation](https://vercel.com/docs)\n\n## License\n\nThis project is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrowdin%2Fapps-quick-start-nextjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrowdin%2Fapps-quick-start-nextjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrowdin%2Fapps-quick-start-nextjs/lists"}