├── .nvmrc
├── .prettierignore
├── .npmignore
├── packages
├── icons
│ ├── src
│ │ ├── browser.js
│ │ ├── Icons.js
│ │ └── index.js
│ ├── README.md
│ ├── package.json
│ └── scripts
│ │ └── build.mjs
├── website
│ ├── routes
│ │ ├── robots.txt
│ │ ├── og-bg.png
│ │ ├── og-default.png
│ │ ├── roboto-flex.woff2
│ │ ├── roboto-mono.woff2
│ │ ├── introducing-firebolt.png
│ │ ├── docs
│ │ │ ├── deployment.mdx
│ │ │ ├── metadata.mdx
│ │ │ ├── ref
│ │ │ │ ├── link.mdx
│ │ │ │ ├── cls.mdx
│ │ │ │ ├── css.mdx
│ │ │ │ ├── env.mdx
│ │ │ │ ├── useRoute.mdx
│ │ │ │ ├── page-mdx.mdx
│ │ │ │ ├── layout.mdx
│ │ │ │ ├── page-js.mdx
│ │ │ │ ├── useCookie.mdx
│ │ │ │ ├── handler-js.mdx
│ │ │ │ ├── error-boundary.mdx
│ │ │ │ ├── useCache.mdx
│ │ │ │ ├── useAction.mdx
│ │ │ │ ├── context.mdx
│ │ │ │ ├── useLoader.mdx
│ │ │ │ └── config.mdx
│ │ │ ├── cookies.mdx
│ │ │ ├── document.mdx
│ │ │ ├── index.mdx
│ │ │ ├── pkg
│ │ │ │ ├── icons.mdx
│ │ │ │ ├── cors.mdx
│ │ │ │ └── snap.mdx
│ │ │ ├── actions.mdx
│ │ │ ├── loaders.mdx
│ │ │ ├── styles.mdx
│ │ │ ├── routes.mdx
│ │ │ └── _layout.js
│ │ ├── blog
│ │ │ ├── _layout.js
│ │ │ ├── introducing-firebolt.mdx
│ │ │ └── index.js
│ │ ├── icon.svg
│ │ ├── not-found.js
│ │ ├── _layout.js
│ │ └── og.js
│ ├── .dockerignore
│ ├── .gitignore
│ ├── README.md
│ ├── .env.example
│ ├── jsconfig.json
│ ├── components
│ │ ├── Analytics.js
│ │ ├── Image.js
│ │ ├── LogoX.js
│ │ ├── Meta.js
│ │ ├── LogoGithub.js
│ │ ├── Page.js
│ │ ├── ThemeBtn.js
│ │ ├── MobileMenu.js
│ │ ├── Header.js
│ │ ├── Logo.js
│ │ └── Styles.js
│ ├── fly.toml
│ ├── package.json
│ ├── firebolt.config.js
│ └── Dockerfile
├── css
│ ├── README.md
│ ├── package.json
│ ├── scripts
│ │ └── build.mjs
│ └── src
│ │ ├── hashString.js
│ │ └── index.js
├── cors
│ ├── README.md
│ ├── package.json
│ ├── scripts
│ │ └── build.mjs
│ └── src
│ │ └── index.js
├── snap
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── index.js
│ │ └── hashString.js
│ └── scripts
│ │ └── build.mjs
├── create-firebolt
│ ├── template
│ │ ├── firebolt.config.js
│ │ ├── _.gitignore
│ │ ├── jsconfig.json
│ │ ├── routes
│ │ │ ├── favicon.ico
│ │ │ ├── _layout.js
│ │ │ ├── not-found.js
│ │ │ ├── index.js
│ │ │ └── logo.svg
│ │ └── package.json
│ ├── README.md
│ ├── package.json
│ ├── scripts
│ │ └── build.mjs
│ └── src
│ │ └── index.js
├── jsx
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ └── index.js
│ └── scripts
│ │ └── build.mjs
└── firebolt
│ ├── README.md
│ ├── extras
│ ├── source-map-support.js
│ ├── bootstrap.js
│ ├── uuid.js
│ ├── config.js
│ ├── hashString.js
│ ├── matcher.js
│ ├── cookies.js
│ └── context.js
│ ├── src
│ ├── utils
│ │ ├── reimport.js
│ │ ├── pkg.js
│ │ ├── style.js
│ │ ├── log.js
│ │ ├── virtualModule.js
│ │ ├── Pending.js
│ │ ├── markdownLoader.js
│ │ ├── zombieImportPlugin.js
│ │ ├── getFilePaths.js
│ │ ├── createRoutePattern.js
│ │ ├── hashString.js
│ │ ├── matcher.js
│ │ ├── web.js
│ │ ├── workerPlugin.js
│ │ ├── errors.js
│ │ ├── mdx.js
│ │ └── registryPlugin.js
│ └── index.js
│ ├── package.json
│ ├── scripts
│ └── build.mjs
│ └── types
│ └── firebolt.d.ts
├── README.md
├── .gitignore
├── .prettierrc
├── package.json
├── LICENSE
└── scripts
└── publish.mjs
/.nvmrc:
--------------------------------------------------------------------------------
1 | 20.11.0
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | dist
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | scripts
3 | src
4 | node_modules
--------------------------------------------------------------------------------
/packages/icons/src/browser.js:
--------------------------------------------------------------------------------
1 | export { Icons } from './Icons'
2 |
--------------------------------------------------------------------------------
/packages/website/routes/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/packages/css/README.md:
--------------------------------------------------------------------------------
1 | # Firebolt CSS
2 |
3 | CSS-in-JS for Firebolt
4 |
--------------------------------------------------------------------------------
/packages/cors/README.md:
--------------------------------------------------------------------------------
1 | # Firebolt CORS
2 |
3 | CORS plugin for Firebolt
4 |
--------------------------------------------------------------------------------
/packages/icons/README.md:
--------------------------------------------------------------------------------
1 | # Firebolt CSS
2 |
3 | CSS-in-JS for Firebolt
4 |
--------------------------------------------------------------------------------
/packages/snap/README.md:
--------------------------------------------------------------------------------
1 | # Firebolt CSS
2 |
3 | CSS-in-JS for Firebolt
4 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Firebolt
2 |
3 | See [firebolt.dev](https://firebolt.dev) for documentation.
4 |
--------------------------------------------------------------------------------
/packages/website/.dockerignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .firebolt
3 | .env*
4 | !.env.example
5 | node_modules
--------------------------------------------------------------------------------
/packages/website/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .firebolt
3 | .env*
4 | !.env.example
5 | node_modules
--------------------------------------------------------------------------------
/packages/create-firebolt/template/firebolt.config.js:
--------------------------------------------------------------------------------
1 | export const config = {
2 | // your config
3 | }
4 |
--------------------------------------------------------------------------------
/packages/jsx/README.md:
--------------------------------------------------------------------------------
1 | # Firebolt JSX
2 |
3 | Custom JSX bindings for Firebolt to power our CSS-in-JS
4 |
--------------------------------------------------------------------------------
/packages/website/README.md:
--------------------------------------------------------------------------------
1 | # Firebolt Website
2 |
3 | The [firebolt.dev](https://firebolt.dev) website.
4 |
--------------------------------------------------------------------------------
/packages/create-firebolt/template/_.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .firebolt
3 | .env*
4 | !.env.example
5 | node_modules
--------------------------------------------------------------------------------
/packages/firebolt/README.md:
--------------------------------------------------------------------------------
1 | # Firebolt
2 |
3 | See [firebolt.dev](https://firebolt.dev) for documentation
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .firebolt
3 | .secret
4 | .env*
5 | !.env.example
6 | node_modules
7 | arch
8 | dist
9 | *.db
--------------------------------------------------------------------------------
/packages/website/routes/og-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/firebolt-dev/firebolt/HEAD/packages/website/routes/og-bg.png
--------------------------------------------------------------------------------
/packages/website/.env.example:
--------------------------------------------------------------------------------
1 | # Port to run the app on
2 | PORT=3000
3 |
4 | # Base URL
5 | PUBLIC_DOMAIN=http://localhost:3000
--------------------------------------------------------------------------------
/packages/firebolt/extras/source-map-support.js:
--------------------------------------------------------------------------------
1 | import sourceMapSupport from 'source-map-support'
2 | sourceMapSupport.install()
3 |
--------------------------------------------------------------------------------
/packages/website/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "paths": {
4 | "@/*": ["./*"]
5 | }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/website/routes/og-default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/firebolt-dev/firebolt/HEAD/packages/website/routes/og-default.png
--------------------------------------------------------------------------------
/packages/website/routes/roboto-flex.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/firebolt-dev/firebolt/HEAD/packages/website/routes/roboto-flex.woff2
--------------------------------------------------------------------------------
/packages/website/routes/roboto-mono.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/firebolt-dev/firebolt/HEAD/packages/website/routes/roboto-mono.woff2
--------------------------------------------------------------------------------
/packages/create-firebolt/template/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "paths": {
4 | "@/*": ["./*"]
5 | }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/website/routes/introducing-firebolt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/firebolt-dev/firebolt/HEAD/packages/website/routes/introducing-firebolt.png
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": false,
3 | "singleQuote": true,
4 | "jsxSingleQuote": true,
5 | "trailingComma": "es5",
6 | "arrowParens": "avoid"
7 | }
8 |
--------------------------------------------------------------------------------
/packages/create-firebolt/template/routes/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/firebolt-dev/firebolt/HEAD/packages/create-firebolt/template/routes/favicon.ico
--------------------------------------------------------------------------------
/packages/create-firebolt/README.md:
--------------------------------------------------------------------------------
1 | # Create Firebolt
2 |
3 | The easiest way to get started with Firebolt is to use `create-firebolt`.
4 |
5 | See [firebolt.dev](https://firebolt.dev) for documentation.
6 |
--------------------------------------------------------------------------------
/packages/firebolt/src/utils/reimport.js:
--------------------------------------------------------------------------------
1 | // utility to re-import a module
2 | export function reimport(module) {
3 | // delete require.cache[module]
4 | return import(`${module}?v=${Date.now()}`)
5 | }
6 |
--------------------------------------------------------------------------------
/packages/firebolt/src/utils/pkg.js:
--------------------------------------------------------------------------------
1 | import fs from 'fs-extra'
2 | import path from 'path'
3 |
4 | const modDir = new URL('.', import.meta.url).pathname
5 | const pkgFile = path.join(modDir, '../package.json')
6 |
7 | export const pkg = await fs.readJSON(pkgFile)
8 |
--------------------------------------------------------------------------------
/packages/cors/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@firebolt-dev/cors",
3 | "version": "0.4.3",
4 | "main": "dist/index.js",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "node scripts/build.mjs",
8 | "build": "node scripts/build.mjs --production"
9 | },
10 | "dependencies": {}
11 | }
12 |
--------------------------------------------------------------------------------
/packages/website/components/Analytics.js:
--------------------------------------------------------------------------------
1 | export function Analytics() {
2 | if (process.env.NODE_ENV === 'production') {
3 | return (
4 |
9 | )
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/packages/firebolt/src/utils/style.js:
--------------------------------------------------------------------------------
1 | import chalk from 'chalk'
2 |
3 | export const dim = chalk.dim
4 | export const mark = chalk.hex('#1ac4ff')
5 |
6 | export const info = chalk.bold.black.bgWhiteBright
7 | export const change = chalk.bold.black.bgWhiteBright
8 | export const error = chalk.bold.whiteBright.bgHex('#e74b4b')
9 |
--------------------------------------------------------------------------------
/packages/icons/src/Icons.js:
--------------------------------------------------------------------------------
1 | export function Icons() {
2 | return (
3 | <>
4 |
5 |
6 |
7 |
8 | >
9 | )
10 | }
11 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "firebolt",
3 | "private": true,
4 | "version": "0.1.0",
5 | "scripts": {
6 | "publish": "node scripts/publish.mjs"
7 | },
8 | "workspaces": [
9 | "packages/*"
10 | ],
11 | "dependencies": {
12 | "inquirer": "^9.2.15",
13 | "prettier": "^3.2.5"
14 | },
15 | "overrides": {
16 | "react": "canary",
17 | "react-dom": "canary"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/packages/css/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@firebolt-dev/css",
3 | "version": "0.4.3",
4 | "main": "dist/index.js",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "node scripts/build.mjs",
8 | "build": "node scripts/build.mjs --production"
9 | },
10 | "dependencies": {
11 | "react": "canary",
12 | "stylis": "^4.3.1"
13 | },
14 | "overrides": {
15 | "react": "canary"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/packages/snap/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@firebolt-dev/snap",
3 | "version": "0.4.3",
4 | "main": "dist/index.js",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "node scripts/build.mjs",
8 | "build": "node scripts/build.mjs --production"
9 | },
10 | "dependencies": {
11 | "puppeteer": "^22.4.1",
12 | "react": "canary"
13 | },
14 | "overrides": {
15 | "react": "canary"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/packages/website/routes/docs/deployment.mdx:
--------------------------------------------------------------------------------
1 |
5 |
6 | # Deployment
7 |
8 | When you're ready to deploy your app to production you can build it with the following command
9 |
10 | ```bash
11 | npm run build
12 | ```
13 |
14 | This creates an optimized build of your app that you can then start with:
15 |
16 | ```bash
17 | npm run start
18 | ```
19 |
--------------------------------------------------------------------------------
/packages/website/fly.toml:
--------------------------------------------------------------------------------
1 | app = 'firebolt'
2 | primary_region = 'lax'
3 |
4 | [build]
5 |
6 | [http_service]
7 | internal_port = 3000
8 | force_https = true
9 | auto_stop_machines = true
10 | auto_start_machines = true
11 | min_machines_running = 1
12 | processes = ['app']
13 |
14 | [http_service.concurrency]
15 | type = "requests"
16 | hard_limit = 99999999
17 | soft_limit = 99999
18 |
19 | [[vm]]
20 | memory = '512mb'
21 | cpu_kind = 'shared'
22 | cpus = 1
23 |
--------------------------------------------------------------------------------
/packages/firebolt/src/utils/log.js:
--------------------------------------------------------------------------------
1 | import * as style from './style'
2 | import { pkg } from './pkg'
3 |
4 | export function intro() {
5 | console.log(`\n 🔥 Firebolt (v${pkg.version})\n`)
6 | }
7 |
8 | export function info(...args) {
9 | console.log(style.info(' INF '), ...args)
10 | }
11 |
12 | export function change(...args) {
13 | console.log(style.change(' CHN '), ...args)
14 | }
15 |
16 | export function error(...args) {
17 | console.log(style.error(' ERR '), ...args)
18 | }
19 |
--------------------------------------------------------------------------------
/packages/firebolt/src/utils/virtualModule.js:
--------------------------------------------------------------------------------
1 | import _path from 'path'
2 |
3 | export function virtualModule(virtuals) {
4 | return {
5 | name: 'virtual-module',
6 | setup(build) {
7 | build.onLoad({ filter: /.*/ }, args => {
8 | const contents = virtuals[args.path]
9 | if (contents) {
10 | return {
11 | contents,
12 | resolveDir: _path.dirname(args.path),
13 | }
14 | }
15 | })
16 | },
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/packages/icons/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@firebolt-dev/icons",
3 | "version": "0.4.3",
4 | "main": "dist/index.js",
5 | "browser": "dist/browser.js",
6 | "type": "module",
7 | "scripts": {
8 | "dev": "node scripts/build.mjs",
9 | "build": "node scripts/build.mjs --production"
10 | },
11 | "dependencies": {
12 | "fs-extra": "^11.2.0",
13 | "sharp": "^0.33.2",
14 | "sharp-ico": "^0.1.5"
15 | },
16 | "overrides": {
17 | "react": "canary"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/packages/jsx/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@firebolt-dev/jsx",
3 | "version": "0.4.3",
4 | "main": "dist/index.js",
5 | "type": "module",
6 | "exports": {
7 | "./jsx-runtime": "./dist/index.js"
8 | },
9 | "scripts": {
10 | "dev": "node scripts/build.mjs",
11 | "build": "node scripts/build.mjs --production"
12 | },
13 | "dependencies": {
14 | "@firebolt-dev/css": "0.4.3",
15 | "react": "canary"
16 | },
17 | "overrides": {
18 | "react": "canary"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/packages/firebolt/src/utils/Pending.js:
--------------------------------------------------------------------------------
1 | export function Pending() {
2 | const listeners = new Set()
3 | let pending
4 | return {
5 | begin() {
6 | pending = true
7 | },
8 | end() {
9 | pending = false
10 | for (const callback of listeners) {
11 | callback()
12 | }
13 | listeners.clear()
14 | },
15 | wait() {
16 | if (!pending) return
17 | return new Promise(resolve => {
18 | listeners.add(resolve)
19 | })
20 | },
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/packages/firebolt/extras/bootstrap.js:
--------------------------------------------------------------------------------
1 | import { hydrateRoot } from 'react-dom/client'
2 | import { Root } from 'firebolt'
3 |
4 | import { createRuntime } from './runtime.js'
5 |
6 | const runtime = createRuntime(globalThis.$firebolt.stack)
7 |
8 | globalThis.$firebolt = (...args) => runtime.call(...args)
9 |
10 | runtime.ready().then(() => {
11 | hydrateRoot(document,
Page not found
27 |
29 | Edit routes/index.js to get started.
30 |
Page not found
29 |