https://github.com/pyrossh/edge-city
edge-city is a next level meta-framework for react that runs only on edge runtimes
https://github.com/pyrossh/edge-city
cloudflare edge react serverless ssr streaming vercel
Last synced: 10 months ago
JSON representation
edge-city is a next level meta-framework for react that runs only on edge runtimes
- Host: GitHub
- URL: https://github.com/pyrossh/edge-city
- Owner: pyrossh
- Created: 2023-03-08T17:33:38.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-06-06T06:50:20.000Z (almost 3 years ago)
- Last Synced: 2025-02-24T04:23:07.756Z (about 1 year ago)
- Topics: cloudflare, edge, react, serverless, ssr, streaming, vercel
- Language: JavaScript
- Homepage:
- Size: 657 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README

# edge-city
edge-city is a next level meta-framework for react that runs only on edge runtimes.
It uses file system routing with streaming SSR + CSR to render pages.
It is very opionated and has set of idiomatic ways of doing things.
It has an inbuilt rpc mechanism to access server resources instead of a typical REST API.
It aims to have almost the same router api as nextjs router for ease of use.
During development each request for a page is executed in a separate edge-runtime (miniflare/vercel) vm.
During production each page is packaged to an esm function adapted to the platform of your choice.
## Why?
* Its really hard to have a streaming SSR + CSR with automatic data rehydration setup in nextjs 13.
* There is no meta-framework which runs your code in an edge simulated environment during development.
## Requirements
1. `node >= v20`
2. `wrangler` for deploying to cloudflare page functions
3. `vercel` for deploying to vercel edge runtime
## DB access
Since it runs only on edge runtimes which run in a constrained browser environment, you have to use database drivers
which can run in the browser, basically utilize Ajax/Fetch/Websocket. Here is a list of some of them,
* [NeonDB serverless driver](https://github.com/neondatabase/serverless) - postgres
* [Platnetscale serverless driver](https://planetscale.com/docs/tutorials/planetscale-serverless-driver) - mysql
* [Mongo Http](https://github.com/patrick-kw-chiu/mongo-http.js) - mongodb
### Supported platforms
1. [Cloudflare page functions](https://developers.cloudflare.com/pages/platform/functions/routing/)
2. [TODO][Vercel edge functions](https://vercel.com/docs/concepts/functions/edge-functions)
3. [TODO][Netlify edge functions](https://docs.netlify.com/edge-functions/overview/)
## Developing
1. `node >= v20.2.0`
2. `pnpm >= v8.5.1`
### Todo[General]
1. Build a docs website
2. Add tests for bot
3. Add tests for runtime
4. Add E2E tests for example
5. Maybe move to vite for HMR goodness
### Todo[Cloudflare]
1. Fix 404 pages not routing on server