{"id":47923024,"url":"https://github.com/jesuisstan/deezeroom-server","last_synced_at":"2026-04-04T06:19:41.731Z","repository":{"id":339947131,"uuid":"1103924842","full_name":"jesuisstan/deezeroom-server","owner":"jesuisstan","description":"Server side for Deezeroom App","archived":false,"fork":false,"pushed_at":"2026-02-22T12:03:59.000Z","size":141,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-22T17:54:06.220Z","etag":null,"topics":["api","graphql","nextjs","react","requests","responce","server","typescript"],"latest_commit_sha":null,"homepage":"https://deezeroom-server.vercel.app","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/jesuisstan.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-25T14:14:27.000Z","updated_at":"2026-02-22T12:04:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jesuisstan/deezeroom-server","commit_stats":null,"previous_names":["jesuisstan/deezeroom-server"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jesuisstan/deezeroom-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jesuisstan%2Fdeezeroom-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jesuisstan%2Fdeezeroom-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jesuisstan%2Fdeezeroom-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jesuisstan%2Fdeezeroom-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jesuisstan","download_url":"https://codeload.github.com/jesuisstan/deezeroom-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jesuisstan%2Fdeezeroom-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31389701,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T04:26:24.776Z","status":"ssl_error","status_checked_at":"2026-04-04T04:23:34.147Z","response_time":60,"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":["api","graphql","nextjs","react","requests","responce","server","typescript"],"created_at":"2026-04-04T06:19:40.059Z","updated_at":"2026-04-04T06:19:41.723Z","avatar_url":"https://github.com/jesuisstan.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DeezerRoom Server\n\nGraphQL API server for [DeezerRoom](https://deezeroom.expo.app) [application](https://github.com/jesuisstan/deezeroom).\n\n## Tech Stack\n\n- **Next.js 16** - React framework with App Router\n- **TypeScript** - Type safety\n- **GraphQL Yoga** - GraphQL server\n- **ESLint + Prettier** - Code quality and formatting\n\n## Getting Started\n\n### Install dependencies\n\n```bash\nnpm install\n```\n\n### Development\n\n```bash\nnpm run dev\n```\n\nStarts the development server at `http://localhost:3000` (accessible from all network interfaces `0.0.0.0`)\n\n**Use specific IP address:**\n\n**Bash (Linux/Mac):**\n\n```bash\nnpm run dev -- -H 192.168.1.100\n```\n\n**PowerShell (Windows):**\n\n```powershell\nnpx next dev -H 192.168.1.100\n```\n\n**Use custom port:**\n\n**Bash (Linux/Mac):**\n\n```bash\nPORT=8080 npm run dev\n```\n\n**PowerShell (Windows):**\n\n```powershell\n$env:PORT=8080; npm run dev\n```\n\n**Combine port and IP:**\n\n**Bash (Linux/Mac):**\n\n```bash\nPORT=8080 npm run dev -- -H 192.168.1.100\n```\n\n**PowerShell (Windows):**\n\n```powershell\n$env:PORT=8080; npx next dev -H 192.168.1.100\n```\n\n#### Development with Tunnel (Different Networks)\n\nWhen your phone and development machine are on different networks (e.g., at School 42), you need to create a tunnel for the GraphQL server:\n\n**Prerequisites:**\n\n- Install `ngrok` globally:\n  ```bash\n  npm install -g ngrok\n  ```\n- Create an account at [ngrok.com](https://ngrok.com/) and get your `authtoken`\n- Configure ngrok with your authtoken (one-time setup):\n  ```bash\n  ngrok config add-authtoken \u003cyour-authtoken\u003e\n  ```\n\n**Start server and tunnel (two terminals):**\n\n**Terminal 1 - Start the server:**\n\n```bash\nnpm run dev\n```\n\n**Terminal 2 - Create tunnel:**\n\n```bash\nngrok http 3000\n```\n\n**Important:** Copy the ngrok URL (e.g., `https://xxxx-xx-xx-xx-xx.ngrok-free.app`) and set it as `EXPO_PUBLIC_SERVER_URL` in your `deezeroom` client `.env` file:\n\n```env\nEXPO_PUBLIC_SERVER_URL=https://xxxx-xx-xx-xx-xx.ngrok-free.app\n```\n\n**Note:** The ngrok URL changes each time you restart the tunnel. You'll need to update `EXPO_PUBLIC_SERVER_URL` accordingly.\n\n**For custom port (e.g., 8080):**\n\nIf you need to use a different port, start the server with that port and create a tunnel to it:\n\n**Terminal 1:**\n\n```bash\nPORT=8080 npm run dev\n```\n\n**Terminal 2:**\n\n```bash\nngrok http 8080\n```\n\n**PowerShell (Windows):**\n\n```powershell\n# Terminal 1\n$env:PORT=8080; npm run dev\n\n# Terminal 2\nngrok http 8080\n```\n\n**Note:** In production mode (`npm start`), you can set both `PORT` and `HOSTNAME` via environment variables:\n\n**Bash (Linux/Mac):**\n\n```bash\nPORT=3000 HOSTNAME=0.0.0.0 npm start\n```\n\n**PowerShell (Windows):**\n\n```powershell\n$env:PORT=3000; $env:HOSTNAME=\"0.0.0.0\"; npm start\n```\n\n### Build\n\n```bash\nnpm run build\n```\n\n### Production\n\n```bash\nnpm start\n```\n\n## Code Quality\n\n### Linting\n\n```bash\nnpm run lint        # Check for linting errors\nnpm run lint:fix    # Auto-fix linting errors\n```\n\n### Formatting\n\n```bash\nnpm run format        # Format all files\nnpm run format:check  # Check formatting without changes\n```\n\n## Project Structure\n\n```\ndeezeroom-server/\n├── src/\n│   └── app/\n│       └── api/\n│           └── graphql/     # GraphQL API endpoint\n├── graphql/                 # GraphQL schema and resolvers\n├── services/                # Business logic (Deezer API integration)\n└── types/                   # TypeScript type definitions\n```\n\n## Environment Variables\n\nThis project does not require a `.env` file. Configuration can be done in several ways:\n\n### Option 1: Command-line (recommended for one-time use)\n\n- **Development:** Use `PORT` and `-H` flags (see [Development](#development) section)\n- **Production (local):** Use `PORT` and `HOSTNAME` environment variables via command line\n\n**Note:** In PowerShell, `$env:PORT=8080` sets the variable only for the current terminal session and won't affect other projects or terminals.\n\n### Option 2: `.env.local` file (recommended for persistent settings)\n\nCreate a `.env.local` file in the project root to isolate settings for this project:\n\n```env\nPORT=8080\nHOSTNAME=0.0.0.0\n```\n\nNext.js automatically reads `.env.local` files. This keeps your project settings separate from other projects.\n\n**Important:** Add `.env.local` to `.gitignore` (already included) to avoid committing local settings.\n\n### Production (Vercel)\n\nNo configuration needed - Vercel manages everything automatically.\n\n## Deployment\n\n### Vercel\n\nThis project is configured for deployment on Vercel.\n\n**Important:** When deploying to Vercel, you do NOT need to set `PORT` or `HOSTNAME` environment variables. Vercel automatically manages:\n\n- Port assignment (Vercel uses its own internal port)\n- Hostname (your app will be accessible via Vercel's provided URL, e.g., `https://your-project.vercel.app`)\n\n**No environment variables are required** for this server application. The GraphQL API endpoint will be available at:\n\n```\nhttps://your-project.vercel.app/api/graphql\n```\n\nTo deploy:\n\n1. Push your code to GitHub/GitLab/Bitbucket\n2. Import the project in Vercel dashboard\n3. Vercel will automatically detect Next.js and deploy\n\nThe deployed URL will be provided by Vercel and can be used as `EXPO_PUBLIC_APP_URL` in your `deezeroom` client application.\n\n## Example: Running Server with Tunnel on Custom IP and Port\n\n**Scenario:** Start server on `localhost:3000` with ngrok tunnel for remote access.\n\n**Step 1:** Setup ngrok (one-time):\n\n```bash\nnpm install -g ngrok\nngrok config add-authtoken \u003cyour-authtoken\u003e\n```\n\n**Step 2:** Start server (Terminal 1):\n\n**Bash (Linux/Mac):**\n\n```bash\nnpm run dev\n```\n\n**Step 3:** Create tunnel (Terminal 2):\n\n```bash\nngrok http 3000\n```\n\n**Step 4:** Copy ngrok URL (e.g., `https://xxxx-xx-xx-xx-xx.ngrok-free.app`) and set in `deezeroom/.env`:\n\n```env\nEXPO_PUBLIC_SERVER_URL=https://xxxx-xx-xx-xx-xx.ngrok-free.app\n```\n\n**Note:** ngrok tunnels to `localhost`, so use port `3000` (not IP) in the ngrok command.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjesuisstan%2Fdeezeroom-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjesuisstan%2Fdeezeroom-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjesuisstan%2Fdeezeroom-server/lists"}