{"id":14975937,"url":"https://github.com/richardd3ng/coaster-client","last_synced_at":"2026-03-08T19:34:17.496Z","repository":{"id":253587054,"uuid":"794655485","full_name":"richardd3ng/Coaster-Client","owner":"richardd3ng","description":"Coaster - Music Map","archived":false,"fork":false,"pushed_at":"2024-09-01T04:36:40.000Z","size":5448,"stargazers_count":2,"open_issues_count":21,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-11T13:02:22.730Z","etag":null,"topics":["expo-cli","geolocation","graphql-client","oauth2","react-native","react-native-maps","react-query","redux","spotify-api","supercluster","ui-kitten"],"latest_commit_sha":null,"homepage":"https://testflight.apple.com/join/HRjutyeD","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/richardd3ng.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}},"created_at":"2024-05-01T17:14:17.000Z","updated_at":"2024-09-01T04:36:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"f80e8a44-6d05-41f8-b359-34b9a8671fec","html_url":"https://github.com/richardd3ng/Coaster-Client","commit_stats":{"total_commits":217,"total_committers":5,"mean_commits":43.4,"dds":"0.13824884792626724","last_synced_commit":"452dbed4ca29682a67c541323412fa64797116e0"},"previous_names":["richardd3ng/coaster-client"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardd3ng%2FCoaster-Client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardd3ng%2FCoaster-Client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardd3ng%2FCoaster-Client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardd3ng%2FCoaster-Client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richardd3ng","download_url":"https://codeload.github.com/richardd3ng/Coaster-Client/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219860932,"owners_count":16556009,"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":["expo-cli","geolocation","graphql-client","oauth2","react-native","react-native-maps","react-query","redux","spotify-api","supercluster","ui-kitten"],"created_at":"2024-09-24T13:52:54.765Z","updated_at":"2025-10-27T17:30:17.661Z","avatar_url":"https://github.com/richardd3ng.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Coaster 🎧\nCoaster is a mobile app inspired by a very good friend of mine who loves sharing music and travel memories - join our test group [here!](https://docs.google.com/document/d/1_VbUTdMC4SZ2JUfEl9FTwajJKHST0oeqn6WOBA_RksU/edit?usp=sharing)\n![coaster-mockup](https://github.com/user-attachments/assets/471bbbc9-78aa-47e4-973e-a36545c8a37c)\n\nCoaster enhances your Spotify experience by:\n\n- Clustering listened tracks geographically on an interactive map\n- Offering playback previews and playlist creation\n- Enabling sharing and filtering of song clusters with friends and the world\n- Supporting location and music-based search queries\n- Facilitating collaborative listening memories with friends\n  \nIn summary, Coaster combines music playback, geolocation, and social features to create a unique, interactive music discovery platform! Click [here](https://drive.google.com/file/d/1kST7KaNh2zrtrXZanQ8jGdlfh0kDm5TU/view?usp=sharing) to view a demo.\n\n## Developer Guide\n### Setup\n1. Install [pnpm](https://pnpm.io/installation)\n2. Install expo: `pnpm i expo -w` (this is the pattern for installing all packages with pnpm, do NOT use npm for installations in this repo)\n3. Clone this GitHub repository\n4. In the project root, run `pnpm install`\n5. In the project root, create a `.env` file with the format shown below (missing details will be provided by someone who knows them)\n```\nBASE_URL = \u003cCoaster Server URL\u003e\nSPOTIFY_CLIENT_ID = \u003csecret\u003e\nSPOTIFY_CLIENT_SECRET = \u003csecret\u003e\nSPOTIFY_REDIRECT_URI = coaster-spotify-login://callback\n```\n- Note: when adding new environment variables, also modify `src/types/env.d.ts` and run `pnpm start -- --reset-cache`\n6. Optional: the nodejs version (22.1.0) is specified in `.tool-versions`, and the xcode version (15.3 (15E204a)) in `.xcode-version`. You can use runtime version managers to manage these. For example: \n```\nasdf local nodejs 22.1.0\nxcodes select 15.3 (15E204a)\n```\n\n### iOS Simulator (Mac only)\nNote: deep-linking capabilities aren't enabled on the simulator\n1. Install [XCode](https://developer.apple.com/xcode/)\n2. Install iOS on XCode: XCode \u003e Settings \u003e Platforms \u003e iOS\n3. In the project root, run `npx expo run:ios`\n4. You can press `shift + i` in the Expo CLI to interactively select a simulator to open\n5. To add additional simulator devices, see [this guide](https://developer.apple.com/documentation/safari-developer-tools/adding-additional-simulators)\n\n### Building\n1. See [this guide](https://docs.expo.dev/build/setup/) to setup Expo build tools\n2. In the project root, run `eas build --profile [profile_name] --platform ios`, where `[profile_name]` can be `development`, `preview`, or `production`\n3. Ask if you need Expo or Apple Developer account permissions\n4. See [this guide](https://docs.expo.dev/debugging/runtime-issues/#production-errors) for debugging preview and production builds\n\n### GraphQL Schema Sync\n1. Start [Coaster-Server](https://github.com/jason-shang/Coaster-Server). Verify the /graphql endpoint is working (should display a sandbox environment in the browser)\n2. Open a seperate terminal. In the project root, run `pnpm graphql-codegen -w`\n4. Changes involving graphql should be reflected in `src/gql/gql.ts` automatically\n\n### Code Conventions\n- Code Conventions generally follow [this guide](https://medium.com/@mahesh.nagpure.mailbox/react-native-coding-standard-structure-ab5c5f9e6784) and [this guide](https://gilshaan.medium.com/react-native-coding-standards-and-best-practices-5b4b5c9f4076)\n- Follow existing directory structure (capitalization patterns, styling files, etc.)\n- Organize imports in alphabetical order, grouped by React, npm libraries, and our own modules, separated by an empty line\n- Use [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) for VSCode\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichardd3ng%2Fcoaster-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichardd3ng%2Fcoaster-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichardd3ng%2Fcoaster-client/lists"}