{"id":20210614,"url":"https://github.com/luisaveiro/playground","last_synced_at":"2025-06-14T04:33:23.607Z","repository":{"id":61247375,"uuid":"512456023","full_name":"luisaveiro/playground","owner":"luisaveiro","description":"Docker Compose collection of tech stack samples.","archived":false,"fork":false,"pushed_at":"2024-01-01T16:02:29.000Z","size":7428,"stargazers_count":28,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-24T12:05:20.455Z","etag":null,"topics":["blog-platform","cms","css-framework","developer-learning","docker","docker-compose","e-commerce","frameworks","fullstack-framework","headless-cms","hybrid-mobile-frameworks","javascript-runtime","playground","programming-languages","samples","static-site-generator","tech-stacks","webservers","websockets","wiki"],"latest_commit_sha":null,"homepage":"","language":null,"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/luisaveiro.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":["luisaveiro"],"custom":["https://www.buymeacoffee.com/luisaveiro"]}},"created_at":"2022-07-10T14:28:17.000Z","updated_at":"2025-03-22T10:17:01.000Z","dependencies_parsed_at":"2023-12-06T21:25:34.371Z","dependency_job_id":"0c337cad-7612-4f3e-86c7-0ef77a733db6","html_url":"https://github.com/luisaveiro/playground","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luisaveiro%2Fplayground","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luisaveiro%2Fplayground/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luisaveiro%2Fplayground/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luisaveiro%2Fplayground/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luisaveiro","download_url":"https://codeload.github.com/luisaveiro/playground/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248225661,"owners_count":21068078,"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":["blog-platform","cms","css-framework","developer-learning","docker","docker-compose","e-commerce","frameworks","fullstack-framework","headless-cms","hybrid-mobile-frameworks","javascript-runtime","playground","programming-languages","samples","static-site-generator","tech-stacks","webservers","websockets","wiki"],"created_at":"2024-11-14T05:48:41.934Z","updated_at":"2025-04-10T13:21:42.798Z","avatar_url":"https://github.com/luisaveiro.png","language":null,"funding_links":["https://github.com/sponsors/luisaveiro","https://www.buymeacoffee.com/luisaveiro"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://supportukrainenow.org\" target=\"_blank\"\u003e\n    \u003cimg src=\"./images/standwithukraine.png\" alt=\"#StandWithUkraine\" width=\"100%\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cbr/\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"http://github.com/luisaveiro/playground\"\u003e\n    \u003cimg\n      src=\"./images/playground.svg\" \n      alt=\"Playground\" \n      width=\"35%\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch4 align=\"center\"\u003e\n  Docker Compose collection of tech stack samples\n\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#tldr\"\u003eTL;DR\u003c/a\u003e •\n  \u003ca href=\"#about\"\u003eAbout\u003c/a\u003e •\n  \u003ca href=\"#disclaimer\"\u003eDisclaimer\u003c/a\u003e •\n  \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e •\n  \u003ca href=\"#download\"\u003eDownload\u003c/a\u003e •\n  \u003ca href=\"#how-to-use\"\u003eHow To Use\u003c/a\u003e •\n  \u003ca href=\"#samples\"\u003eSamples\u003c/a\u003e •\n  \u003ca href=\"#faq\"\u003eFAQ\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#useful-tips\"\u003eUseful Tips\u003c/a\u003e •\n  \u003ca href=\"#changelog\"\u003eChangelog\u003c/a\u003e •\n  \u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e •\n  \u003ca href=\"#security-vulnerabilities\"\u003eSecurity Vulnerabilities\u003c/a\u003e •\n  \u003ca href=\"#credits\"\u003eCredits\u003c/a\u003e •\n  \u003ca href=\"#Sponsor\"\u003eSponsor\u003c/a\u003e •\n  \u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\n\u003c/p\u003e\n\n## \u003ca id=\"tldr\"\u003e\u003c/a\u003e TL;DR\n\n***Playground*** is a collection of Docker Compose files that provides a \nstarting point for how to integrate different services and allows you to learn \nand experiment with tech stacks samples.\n\n#### Quick Start\n\n1. Clone this repository.\n2. All ***Playground*** samples can be found in `samples` directory.\n3. Copy the DotEnv example file to create your DotEnv file and override the \nDocker Compose variables.\n4. If the ***Playground*** sample includes a Makefile. You must execute the make \ncommand before you can have the ***Playground*** sample set up and running in a \nDocker container.\n5. Start the ***Playground*** sample by executing the `docker compose up` \ncommand.\n\n## About\n\nThis repository is a collection of Docker Compose files for tech stack samples, \nincluding frameworks, blog platforms, CMS, e-commerce, headless CMS, and \n\"Hello, World!\" examples for most common programming languages. The samples \noffer a simple approach to setting up their respective tech stacks for a local \nenvironment.\n\n**What is the purpose of the Playground collection?**  \n\nThe ***Playground*** collection provides a starting point for how to integrate \ndifferent services and allows you to learn and experiment with tech stacks. By \nhaving the tech stack samples run in a Docker environment, you don't have to \ninstall additional dependencies before you can get started.\n\n## Disclaimer\n\n\u003e [!IMPORTANT]  \n\u003e The ***Playground*** samples are intended for use in local development \nenvironments such as prototyping, tinkering with software stacks, etc. These \nsamples \u003cins\u003e**MUST NOT**\u003c/ins\u003e be deployed in production environments.\n\n## Getting Started\n\nYou will need to make sure your system meets the following prerequisites:\n\n- Docker Engine \u003e= 20.10.00\n\nThis repository utilizes [Docker](https://www.docker.com/) to run the tech \nstack samples. So, before using any of the ***Playground*** samples, make sure \nyou have Docker installed on your system.\n\n## Download\n\nYou can clone the latest version of ***Playground*** repository for macOS, \nLinux and Windows.\n\n```bash\n# Clone this repository.\n$ git clone git@github.com:luisaveiro/playground.git --branch main --single-branch\n```\n\nAll ***Playground*** samples can be found in `samples` directory.\n\n```bash\n# Navigate to the samples\n$ cd playground/samples\n```\n\n## How To Use\n\nThere are a few steps you need to follow before you have a ***Playground*** \nsample set up and running in a Docker container. I have outlined the included \nfiles you would need to take to get started.\n\n#### 1. \u003cins\u003eDotEnv\u003c/ins\u003e\n\nYou can override the variables in the Docker Compose file, e.g. container name, \nnetwork name and port mapping. All ***Playground*** samples include a DotEnv \nexample file (`.env.example`) that you can copy to create your DotEnv file and \noverride the Docker Compose variables.\n\n#### 2. \u003cins\u003eDockerfile\u003c/ins\u003e\n\nSome tech stacks require additional dependencies, e.g. libraries and CLI tools. \nHowever, not all tech stacks offer an official Docker image. I have included a \nDockerfile for ***Playground*** samples that need a Docker image with the \nnecessary dependencies.\n\nThe Docker Compose file and Makefile automatically build the Docker image from \nthe Dockerfile.\n\n#### 3. \u003cins\u003eMakefile\u003c/ins\u003e\n\nThe Makefile offers a developer-friendly approach to automate the set up of \n***Playground*** samples. Some tech stacks CLI tools have a setup command that \noffers an initial starter app.\n\nIf the ***Playground*** sample has a Dockerfile, the Makefile will build the \nDocker image from the Dockerfile. The Makefile will execute the setup command \nin a Docker container. You will need to follow the CLI installation steps.\n\nThe Makefile will create and attach the `CODE_DIR` (default `code` directory) \nas a Docker volume. Your new ***Playground*** sample source code will be stored \nin the `CODE_DIR`.\n\nIn each ***Playground*** samples' Makefile I have included an example on how \nto execute the make command. You will need to execute the make command before \nyou can have the ***Playground*** sample set up and running in a Docker \ncontainer.\n\n#### 4. \u003cins\u003eDocker Compose\u003c/ins\u003e\n\nEach ***Playground*** sample has its individual Docker Compose file. All \nsamples' services will run in separate Docker containers. ***Playground*** \nsample source code will be stored in the `CODE_DIR` (default `code` directory) \nas a Docker volume.\n\n***Playground*** samples that do not have have a Makefile will automatically \nexecute the setup command of their respective tech stacks.\n\nTo start a ***Playground*** sample, you can run the following command:\n\n```bash\n$ docker compose up\n\n# or run container in detached mode\n$ docker compose up -d\n```\n\n## Samples\n\nThere are currently **100** samples included in the ***Playground*** repository. \nThe ***Playground*** samples are categorised into one of the following tech \nstacks:\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eProgramming Languages (Hello, World!)\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003eBash\u003c/li\u003e\n    \u003cli\u003eC\u003c/li\u003e\n    \u003cli\u003eC++\u003c/li\u003e\n    \u003cli\u003eC#\u003c/li\u003e\n    \u003cli\u003eDart\u003c/li\u003e\n    \u003cli\u003eElixir\u003c/li\u003e\n    \u003cli\u003eErlang\u003c/li\u003e\n    \u003cli\u003eGolang\u003c/li\u003e\n    \u003cli\u003eJava\u003c/li\u003e\n    \u003cli\u003eJavaScript (Vite)\u003c/li\u003e\n    \u003cli\u003eJulia\u003c/li\u003e\n    \u003cli\u003eNim\u003c/li\u003e\n    \u003cli\u003ePHP (Apache)\u003c/li\u003e\n    \u003cli\u003ePHP (CLI)\u003c/li\u003e\n    \u003cli\u003ePython\u003c/li\u003e\n    \u003cli\u003eRuby\u003c/li\u003e\n    \u003cli\u003eRust\u003c/li\u003e\n    \u003cli\u003eSwift\u003c/li\u003e\n    \u003cli\u003eTypeScript (Vite)\u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eAnalytics Platforms\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      Ackee\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript, Node.js, MongoDB\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eApp Frameworks\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      Flutter (Web)\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eDart\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eBlogs\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      Ghost\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript, Node.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Hexo\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript, Node.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Jekyll\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eRuby\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eContent Management Systems (CMS)\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      ApostropheCMS\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript, Node.js, MongoDB\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Drupal\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003ePHP, MariaDB\u003c/i\u003e\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Joomla\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003ePHP, MySQL\u003c/i\u003e\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      October CMS\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eLaravel, PHP\u003c/i\u003e\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Statamic\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eLaravel, PHP\u003c/i\u003e\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      WordPress\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003ePHP, MySQL\u003c/i\u003e\u003c/sup\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eCSS Frameworks\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003eBootstrap\u003c/li\u003e\n    \u003cli\u003eTailwind CSS\u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eE-commerce\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      PrestaShop\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003ePHP, MySQL\u003c/i\u003e\u003c/sup\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eEmail Generators\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      React Email\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eReact, TypeScript, Next.js\u003c/i\u003e\u003c/sup\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eFrameworks\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      AdonisJS\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript, Node.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Alpine.js\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Angular (Angular CLI)\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      ASP.NET\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eC#, .NET\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Django\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003ePython\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Egg\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript, Koa, Node.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Elysia\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript, Bun\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Express\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript, Node.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Fastify\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript, Node.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Fiber\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eGolang\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Flask\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003ePython\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Fresh\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript, Deno\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Gin\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eGolang\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Goravel\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eGolang\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Lit (Vite)\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript/TypeScript\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      NestJS\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eNode.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Nue\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Preact (Vite)\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript/TypeScript\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      PyScript\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003ePython, Pyodide, WASM\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Quasar\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript, Vue.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Qwik\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Revel\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eGolang\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Rocket\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eRust\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Solid\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript/TypeScript\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Spark.NET\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eC#, ASP.NET\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Svelte (Vite)\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript/TypeScript\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Vue (Vite)\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript/TypeScript\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eFull Stack Frameworks (FSF)\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      Analog\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript, Angular\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Blitz\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript, React, Next.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Copper\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eGolang, React\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      JD App\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript, Solid\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Laravel\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003ePHP\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Next.js\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript, React\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Nuxt\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript, Vue.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Redwood\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript, React\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Remix\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript, React\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Ruby on Rails\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eRuby\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      SvelteKit\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript, Svelte\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      T3\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript, React, Next.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eFuzzy-search libraries\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      Fuse.js\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript\u003c/i\u003e\u003c/sup\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eHeadless CMS\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      Directus\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript, SQLite\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Strapi\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Tina\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eHybrid Mobile Frameworks\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      Ionic\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eAngular, React, Vue.js, JavaScript\u003c/i\u003e\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      React Native\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eReact, JavaScript\u003c/i\u003e\u003c/sup\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eJavaScript Libraries\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003ehtmx\u003c/li\u003e\n    \u003cli\u003ejQuery\u003c/li\u003e\n    \u003cli\u003eReact (Vite)\u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eJavaScript Runtimes\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003eBun\u003c/li\u003e\n    \u003cli\u003eDeno\u003c/li\u003e\n    \u003cli\u003eNode\u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eReactive Data Stores\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      TinyBase\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript, TypeScript, React\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eSlides\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      Slidev\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript, Vue.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eStatic Site Generators (SSG)\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      Astro\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Docusaurus\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript, React\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Eleventy\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Gatsby\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript, React\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Hugo\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eGolang\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Lume\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript, Deno\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      VitePress\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript, Vue.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      VuePress\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript, Vue.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eUI Kits\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      Naive UI\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript, Vue.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Pines UI\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eAlpine \u0026 Tailwind CSS\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003eUIkit\u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eVideo Frameworks\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      Remotion\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eTypeScript, React/Remix\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eWebSockets\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      Socket.IO\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript, Node.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      Soketi\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript, Node.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eWeb Servers\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003eApache\u003c/li\u003e\n    \u003cli\u003eCaddy\u003c/li\u003e\n    \u003cli\u003eNginx\u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eWikis\u003c/b\u003e\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      Wiki.js\u003cbr/\u003e\n      \u003csup\u003eTech Stack: \u003ci\u003eJavaScript, Vue.js, Node.js\u003c/i\u003e.\u003c/sup\u003e\n    \u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n## FAQ\n\n**Q:** Are you planning to add additional tech stack samples?  \n**A:** I do have a roadmap for adding additional tech stack samples to \n***Playground***. However, you can suggest a tech stack in the \n[Discussion section](https://github.com/luisaveiro/playground/discussions/categories/ideas) \nand I will try to include the sample as part of ***Playground*** \ncollection.\n\n**Q:** Are you able to provide \"beginner\" guides for each sample?  \n**A:** I will be providing additional readme files for each ***Playground*** \nsample that will include how to get started and use the sample.\n\n**Q:** Are you able to provide \"How-to\" guides to combine multiple samples?  \n**A:** Yes, I will be including additional guides to help developers that want \nto combine two or more ***Playground*** samples.\n\n## Useful Tips\n\n[Fig](https://withfig.com/) is a CLI tool that adds VSCode-style autocomplete \nto your existing Terminal. You can build autocomplete functionality for any CLI \nwith javascript, not bash. You can share it with your team, or contribute to \nFig open source specs for tools like `git`, `aws`, `kubectl`.\n\n[Localhost Databases](http://github.com/luisaveiro/localhost-databases) is a \ncollection of Docker Compose files for relational and NoSQL databases. Which \naims to offer a simple approach to setting up databases for a local environment.\n\n[Docker Reverse Proxy](https://github.com/luisaveiro/docker-reverse-proxy) \noffers a simple approach to having a Caddy Server as a local reverse proxy for \nyour Docker containers.\n\n[Programiz](https://www.programiz.com/) let's you learn to code in Python, \nC/C++, Java, and other popular programming languages with their \nbeginner-friendly tutorials and examples.\n\n[Kodekloud.com](https://kodekloud.com) offer courses with real scenarios and \npractice labs to become a DevOps expert. They provide a learning path to guide \nyou in your journey in DevOps from the basics concepts to in-depth advanced \ntopics to help you prepare for your certifications.\n\nKodekloud has a free [Docker For The Absolute Beginner](https://kodekloud.com/p/docker-for-the-absolute-beginner-hands-on) \ncourse. The course will help you practice Docker commands and developing your \nown images using Dockerfiles and practice Docker Compose.\n\n**Please note:** Most of the courses on Kodekloud.com require you to pay for a \nsubscription to access the course content and materials.\n\n## Changelog\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information what has changed \nrecently.\n\n## Contributing\n\nI encourage you to contribute to ***Playground***! Contributions are what make \nthe open source community such an amazing place to be learn, inspire, and \ncreate. Any contributions you make are **greatly appreciated**.\n\nPlease check out the [contributing to Playground guide](.github/CONTRIBUTING.md) \nfor guidelines about how to proceed.\n\n## Security Vulnerabilities\n\nTrying to report a possible security vulnerability in ***Playground*** samples? \nPlease check out our [security policy](.github/SECURITY.md) for guidelines \nabout how to proceed.\n\n## Credits\n\nThe illustration used in the project is from \n[unDraw (created by Katerina Limpitsouni)](https://undraw.co/). All product \nnames, logos, brands, trademarks and registered trademarks are property of \ntheir respective owners.\n\n## Sponsor\n\nDo you like this project? Support it by donating.\n\n\u003ca href=\"https://www.buymeacoffee.com/luisaveiro\"\u003e\n  \u003cimg src=\"./images/bmc-button.svg\" alt=\"Code Review\" width=\"144\"\u003e\n\u003c/a\u003e\n\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE) for more information.\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"http://github.com/luisaveiro\" target=\"_blank\"\u003eGitHub\u003c/a\u003e •\n  \u003ca href=\"https://uk.linkedin.com/in/luisaveiro\" target=\"_blank\"\u003eLinkedIn\u003c/a\u003e •\n  \u003ca href=\"https://twitter.com/luisdeaveiro\" target=\"_blank\"\u003eTwitter\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluisaveiro%2Fplayground","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluisaveiro%2Fplayground","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluisaveiro%2Fplayground/lists"}