{"id":13494367,"url":"https://github.com/syntaxfm/website","last_synced_at":"2025-03-28T14:31:09.118Z","repository":{"id":37390568,"uuid":"94822475","full_name":"syntaxfm/website","owner":"syntaxfm","description":"Syntax Podcast Website","archived":false,"fork":false,"pushed_at":"2024-04-12T17:46:22.000Z","size":204485,"stargazers_count":951,"open_issues_count":34,"forks_count":492,"subscribers_count":21,"default_branch":"main","last_synced_at":"2024-04-14T00:24:57.840Z","etag":null,"topics":["css","hacktoberfest","html","javascript","svelte","sveltekit","tasty","treats"],"latest_commit_sha":null,"homepage":"https://syntax.fm","language":"Svelte","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/syntaxfm.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}},"created_at":"2017-06-19T21:28:08.000Z","updated_at":"2024-04-16T16:58:29.899Z","dependencies_parsed_at":"2023-12-13T18:43:44.578Z","dependency_job_id":"1452cdd2-fa61-4d93-bd59-265fa2b7e99b","html_url":"https://github.com/syntaxfm/website","commit_stats":{"total_commits":2184,"total_committers":213,"mean_commits":"10.253521126760564","dds":0.8223443223443223,"last_synced_commit":"3f231f7e89befde3cc1d89c7c3e9d69b4307cb6e"},"previous_names":["wesbos/syntax"],"tags_count":126,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syntaxfm%2Fwebsite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syntaxfm%2Fwebsite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syntaxfm%2Fwebsite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syntaxfm%2Fwebsite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/syntaxfm","download_url":"https://codeload.github.com/syntaxfm/website/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246045867,"owners_count":20714861,"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":["css","hacktoberfest","html","javascript","svelte","sveltekit","tasty","treats"],"created_at":"2024-07-31T19:01:24.328Z","updated_at":"2025-03-28T14:31:04.102Z","avatar_url":"https://github.com/syntaxfm.png","language":"Svelte","readme":"# Syntax.\n\nA tasty treats podcast for Web Developers.\n\nThis is the site that runs [Syntax.fm](https://syntax.fm) — go there to listen to it!\n\nThis site is built on SvelteKit.\n\n## Requirements\n\n- Node 18.0.0 or higher\n\n## Prerequisite\n\n- Install Node - https://nodejs.org/en\n- Install pnpm - https://pnpm.io/installation\n  - If you are on a Mac, there is an issue with the curl install.\n  - Preferably, use homebrew to install:\n    - `brew install pnpm`\n- Install mysql or use docker with the provided `docker-compose.yml` file.\n\nThis site uses MySQL via Prisma, so you will need a valid MySQL connection string.\n\n## Getting Started\n\n### Without Docker\n\nHave your database connection string handy.\n\n1. `pnpm install`\n2. `pnpm preheat`\n3. `pnpm dev`\n\nThat's it!\n\n### With Docker\n\n1. Read Prerequisites above ^^ before starting\n1. Copy `.env.example` to `.env` and specify env variables (needs at least `DATABASE_URL`, see [here](#where-to-get-your-own-environment-variables) for how to get the others)\n   - If using Docker, add the following at the top of your `.env` file to share variables with the `docker-compose.yml` (replace the existing DATABASE_URL with the one below)\n     ```sh\n     # required to run the seed commands within the container\n     DOCKER=true\n     # any value other than \"true\" is considered false\n     DATABASE_HOST=localhost\n     DATABASE_PORT=3306\n     DATABASE_USER=syntax\n     DATABASE_PASSWORD=syntax\n     DATABASE_NAME=syntax\n     DATABASE_ROOT_PASSWORD=syntax\n     DATABASE_URL=mysql://${DATABASE_USER}:${DATABASE_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME}\n     REDIS_PORT=6379\n     REDIS_HTTP_PORT=8079\n     UPSPLASH_TOKEN=supersecret\n     UPSPLASH_URL=http://localhost:${REDIS_HTTP_PORT}\n     ```\n1. If using docker, in a separate tab run -\u003e `docker compose up`\n1. Run -\u003e `pnpm preheat`\n1. Run -\u003e `pnpm dev`\n1. Visit `http://localhost:5173`\n\n### Scripts\n\n- Generate Types `pnpm db:generate`\n- DB studio `pnpm db:studio`\n- DB Migrations `pnpm db:push`\n- DB Seed `pnpm db:seed`\n\n### About this codebase\n\nJust about all major code folders live in `/src` with the exception of `/shows` - the md source of truth for all podcast episodes as well as `/prisma` for our db connections and schema.\n\n|              |                                                                                               | Alias      |\n| ------------ | --------------------------------------------------------------------------------------------- | ---------- |\n| `/actions`   | Svelte Actions, these are reusable functions that act as lifecycle on DOM elements            | $actions   |\n| `/assets`    | Static assets that are used via @import                                                       | $assets    |\n| `/server`    | All database and server-side only reusable code                                               | $server    |\n| `/lib`       | (SK Paradigm) Components and files that are used in more than one route                       | $lib       |\n| `/params`    | (SK Paradigm) This is a SvelteKit specific folder to add validation on parameter based routes |            |\n| `/routes`    | (SK Paradigm) File System based routing                                                       |            |\n| `/state`     | Global State containers and resolvers                                                         | $state     |\n| `/styles`    | CSS                                                                                           |\n| `/utilities` | Global Utility functions                                                                      | $utilities |\n| `/`          | Root                                                                                          | $          |\n\n### Stylin'\n\nThese are the available media queries:\n\n```css\n@custom-media --below-small (width \u003c 400px);\n@custom-media --below-med (width \u003c 700px);\n@custom-media --below-large (width \u003c 900px);\n@custom-media --below-xlarge (width \u003c 1200px);\n@custom-media --above-small (width \u003e 400px);\n@custom-media --above-med (width \u003e 700px);\n@custom-media --above-large (width \u003e 900px);\n@custom-media --above-xlarge (width \u003e 1200px);\n\n// Usage\n@media (--above-med) {\n}\n```\n\n### Where to get your own Environment Variables\n\n| Variable                     | Where to get it                                                         | Notes                                                                                           |\n| ---------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |\n| PUBLIC_GITHUB_ID, GH_SECRET  | [Github Oauth Apps](https://github.com/settings/developers)             | Create new OAuth App, set `http://localhost:5173/api/oauth/github/callback` as the redirect URL |\n| DEEPGRAM_SECRET              | [Deepgram](https://console.deepgram.com/)                               |                                                                                                 |\n| SENTRY_AUTH_TOKEN            | [Sentry](https://docs.sentry.io/product/accounts/auth-tokens/)          |                                                                                                 |\n| OPENAI_API_KEY               | [Open AI](https://platform.openai.com/account/api-keys)                 |                                                                                                 |\n| UPSPLASH_TOKEN, UPSPLASH_URL | [https://upstash.com/](https://upstash.com/)                            | Create a redis DB after sign up in the console                                                  |\n| YOUTUBE_API_KEY              | [Google API Console](https://console.cloud.google.com/apis/credentials) | Create an API key, visit the library and enable \"YouTube Data API v3\"                           |\n\n# Our Contributors\n\n\u003ca href=\"https://github.com/syntaxfm/website/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=syntaxfm/website\" /\u003e\n\u003c/a\u003e\n","funding_links":[],"categories":["Svelte"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyntaxfm%2Fwebsite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsyntaxfm%2Fwebsite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyntaxfm%2Fwebsite/lists"}