{
  "$type": "site.standard.document",
  "content": {
    "$type": "site.standard.content.markdown",
    "text": "import Youtube from '../../components/mdx/Youtube.astro'\n\nWell, I recently quit my job so I got free time and this hackathon between [Hashnode](https://hashnode.com) and [Appwrite](https://appwrite.io) is announced. This is clearly a sign. So I decided to build [MoviePlay](https://appwrite.io). Before we get into the trials and tribulations of this project, let's get all the technical stuff out of the way.\n\n## The Idea\n\nHave you ever had a debate with someone as to what is the correct order to watch Star Wars? There's the chronological order, the release order, the machete order\n\n![enough already](https://media.giphy.com/media/SRka2MLKzpzE6K24al/giphy.gif)\n\n## Team\n\n- Me\n\n## Tech Stack\n\n- ReactJS & Typescript (ViteJS)\n\n* TailwindCSS & DaisyUI\n\n* [Appwrite Cloud](https://cloud.appwrite.io)\n  - Database\n\n  - Account\n\n  - Functions\n    - NodeJS\n\n* Vercel\n\n* [The-Movie-Wrapper](https://www.npmjs.com/package/@matfire/the_movie_wrapper) (I made this one, but still...)\n\n## Look at the code\n\nYou can see the code [here](https://github.com/matfire/movieplay) and see it live [here](https://movieplay.nirah.tech)\n\n## Demo\n\n<Youtube id='8GJyqRNkZrA' />\n\n## On the using of Appwrite\n\nI had already used a self-hosted version of Appwrite and have been tinkering with the closed cloud beta for a bit, so I was already familiar with the tool and will not really talk about onboarding.\n\n### Database\n\nI was a bit disappointed relationships (as of 06/04/2023) are not yet supported on Cloud, so you still need to do all the foreign key constraints by hand, which makes fetching client-side a bit of a hassle.\n\n### Account\n\nI really like how accounts are handled, especially oauth2 stuff; the fact that you can connect multiple providers for the same account seamlessly is pretty cool\n\n### Functions\n\nI needed to use functions to store the number of views a playlist could get. I would have loved a trigger on **database read operations**, but I can see it would probably be too much performance overhead; the way I solved this is when navigating to a page, the page loader function triggers the function to increment the views number.",
    "version": "1.0"
  },
  "path": "/articles/appwrite-hackaton-movieplay",
  "publishedAt": "2023-06-10T00:00:00.000Z",
  "site": "at://did:plc:dgtaz4vldacvqhvvmdvoc4ad/site.standard.publication/3mfbydibiwc7f",
  "tags": [
    "reactjs",
    "typescript",
    "tailwind-css",
    "appwrite"
  ],
  "textContent": "import Youtube from '../../components/mdx/Youtube.astro'\n\nWell, I recently quit my job so I got free time and this hackathon between Hashnode and Appwrite is announced. This is clearly a sign. So I decided to build MoviePlay. Before we get into the trials and tribulations of this project, let's get all the technical stuff out of the way.\n\nThe Idea\n\nHave you ever had a debate with someone as to what is the correct order to watch Star Wars? There's the chronological order, the release order, the machete order\n\nTeam\nMe\n\nTech Stack\nReactJS & Typescript (ViteJS)\n\n TailwindCSS & DaisyUI\n\n Appwrite Cloud\nDatabase\nAccount\nFunctions\nNodeJS\n\n Vercel\n\n The-Movie-Wrapper (I made this one, but still...)\n\nLook at the code\n\nYou can see the code here and see it live here\n\nDemo\n\nOn the using of Appwrite\n\nI had already used a self-hosted version of Appwrite and have been tinkering with the closed cloud beta for a bit, so I was already familiar with the tool and will not really talk about onboarding.\n\nDatabase\n\nI was a bit disappointed relationships (as of 06/04/2023) are not yet supported on Cloud, so you still need to do all the foreign key constraints by hand, which makes fetching client-side a bit of a hassle.\n\nAccount\n\nI really like how accounts are handled, especially oauth2 stuff; the fact that you can connect multiple providers for the same account seamlessly is pretty cool\n\nFunctions\n\nI needed to use functions to store the number of views a playlist could get. I would have loved a trigger on database read operations, but I can see it would probably be too much performance overhead; the way I solved this is when navigating to a page, the page loader function triggers the function to increment the views number.",
  "title": "Appwrite Hackaton: MoviePlay",
  "updatedAt": "2026-05-17T13:09:11.315Z"
}