{"id":21606233,"url":"https://github.com/zaydek/retro","last_synced_at":"2025-04-11T04:05:03.110Z","repository":{"id":57170321,"uuid":"351500207","full_name":"zaydek/retro","owner":"zaydek","description":"[WIP] Retro is a simple and fast React development environment, powered by esbuild.","archived":false,"fork":false,"pushed_at":"2021-12-06T22:15:20.000Z","size":4447,"stargazers_count":8,"open_issues_count":9,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-25T02:11:08.750Z","etag":null,"topics":["create-react-app","dev","esbuild","react","server"],"latest_commit_sha":null,"homepage":"","language":"Go","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/zaydek.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-03-25T16:16:11.000Z","updated_at":"2023-07-11T19:05:01.000Z","dependencies_parsed_at":"2022-08-27T13:11:40.419Z","dependency_job_id":null,"html_url":"https://github.com/zaydek/retro","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaydek%2Fretro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaydek%2Fretro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaydek%2Fretro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaydek%2Fretro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zaydek","download_url":"https://codeload.github.com/zaydek/retro/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248021226,"owners_count":21034609,"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":["create-react-app","dev","esbuild","react","server"],"created_at":"2024-11-24T20:19:52.786Z","updated_at":"2025-04-11T04:05:03.089Z","avatar_url":"https://github.com/zaydek.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Introducing Retro\n\nWhat is Retro? Retro is a React toolkit for building client-side rendered (CSR) and server-side generated (SSG) web apps.\n\nRetro is based on the philosophy that building web apps should be fast, simple, and fun.\n\nIn practice, Retro is a React toolkit that builds on top of Go, Node, React, and esbuild. You can use Retro to build client-side rendered (CSR) or server-side generated (SSG) web apps. Note that Retro does not support server-side rendering (SSR) as Retro is not currently designed to emit a binary or a runtime; Retro is designed to only emit HTML, CSS, and JS files. The only difference being whether these files are interpreted eagerly (SSG) or lazily (CSR).\n\nFurthermore, Retro ships its own small standard library to make it easier to get up and running. The standard library currently includes a store and router implementation, designed to make Retro source idiomatic.\n\n**Retro is not for everyone or every project.** Retro only solves for client-side rendered (CSR) and server-side generated (SSG) web apps.\n\n## Get Started\n\nTo create a Retro web app, simply run the following command:\n\n```sh\nnpx @zaydek/create-retro-app my-retro-app\n```\n\nThis will create a new React app at the directory `\u003cdir\u003e` or in the current directory if omitted.\n\nStart the development server:\n\n```sh\nretro dev\n```\n\nBuild the production-ready build:\n\n```sh\nretro build\n```\n\nServe the production-ready build:\n\n```sh\nretro build\n```\n\n## esbuild-style Configuration\n\nRetro leverages esbuild to bundle apps for both development and production. Retro's build process can be configured using esbuild-style configuration. Simply add `retro.config.js` at the root directory of your project. This makes Retro apps extensible and can be customizable on a per-app basis.\n\nSome examples of how configuration can support your development include:\n\n- Adding support for HTML imports, such as `.svg`\n- Adding support for build-time CSS tooling, such as Sass\n- Changing the JavaScript lowering target\n\n## Automatic TypeScript Transpilation\n\nAs Retro is built on top of esbuild, esbuild transpiles JavaScript React, TypeScript, and TypeScript React source code on-demand. Note that type-checking is not performed on your source code and additional tooling is needed to support this use-case. That being said, you can mix-and-match JavaScript and TypeScript source code. This is the preferred method for authoring complex apps. You don't need to choose a JavaScript or TypeScript template to get started and you won't need to refactor to 100% JavaScript or 100% TypeScript once you've started.\n\n## License\n\nRetro is licensed as [MIT open source](/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzaydek%2Fretro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzaydek%2Fretro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzaydek%2Fretro/lists"}