26 lines
1.6 KiB
Markdown
26 lines
1.6 KiB
Markdown
|
# Deno React Web Starter
|
||
|
|
||
|
This is a template repository for bootstrapping simple React SSR applications using [Deno](https://deno.land/), [Oak](https://deno.land/x/oak), [React](https://reactjs.org/), and [Firebase](https://console.firebase.google.com/u/0/).
|
||
|
|
||
|
## Why
|
||
|
|
||
|
Using Deno means being able to work with modern JS features in a direct way without needing transpilation steps. `Deno.emit()` creates a client bundle which is exposed by a simple webserver.
|
||
|
|
||
|
## Features
|
||
|
|
||
|
Quickly supports websockets connections, static file serving, and authentication with Firebase. Simply uncomment the appropriate locations in code and add your configuration variables.
|
||
|
|
||
|
## Code layout
|
||
|
|
||
|
- `~/client`: any code that is compiled and shipped to the browser.
|
||
|
- `~/client/styles.css`: the stylesheet for the application. more could certainly be integrated here.
|
||
|
- `~/client/App.tsx`: the entrypoint for the app, which imports everything else in the folder.
|
||
|
- `~/common`: modules shared between browser and server code.
|
||
|
- `~/common/wasm`: doesn't exist in this repository, but can be added (using e.g. [`wasm-pack`](https://github.com/rustwasm/wasm-pack)) to easily support webassembly modules in both client and server.
|
||
|
- other common utilities as a common import example.
|
||
|
- `~/server`: a simple webserver with example websocket and REST endpoints.
|
||
|
- `~/import_map.json`: the import map! starts with any relevant dependencies.
|
||
|
- `~/Procfile`: an example Procfile showing how to run the service. To convert this to any other form of script, simply trim the prefix `web:`.
|
||
|
|
||
|
Enable SSR by un-commenting the React and ReactDOMServer lines in `~/server/routes/static.tsx`.
|