Skip to content
Source code for https://www.hyperstart.io
TypeScript CSS JavaScript HTML
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode
assets
config
docs
functions
src
.gitignore
.prettierignore
LICENSE
README.md
firebase.json
firestore.indexes.json
firestore.rules
package-lock.json
package.json
storage.rules
tsconfig.json
webpack.config.js

README.md

Hyperstart

Repository for https://www.hyperstart.io

Hyperstart.io is an online development environment tailored for Hyperapp.

This repository contains:

  • the open-source code for hyperstart.io (the open sourcing in progress, the code here is not yet representative of the actual production code)
  • issues related to hyperstart.io, please open an issue in the repo for any assistance

Technologies

Overall Structure

  • All source code is contained in the src folder.
  • The src/lib folders contains utilities that are not specific to Hyperstart and could be later exported to their own package.
  • The sources are divided into modules, each module lives in its own folder and contains the following sources:
    • api.ts: The type information for the public-facing API of this module.
    • module.ts: The implementation of the state and actions for this module.
    • selectors.ts: A list of pure functions that take the state and compute some useful value out of it (not present in all modules).
    • Xxx.tsx: The view(s) (i.e. components that use the entire state and action tree) for this module. There may 0 or many of these depending on the module.
    • components/ (folder): Components (often internal only) relevant for this module.
    • index.ts: The file that exports public apis (i.e. everything except the module's implementation)
  • On startup, an init() action gets called on each top-level module with the global actions.
    Each top-level module receives the public facing API of each other module.
    Each module can store the dependencies it needs from other modules at this point.
    Note: there is a circular dependency between all the api.ts files of all modules, but this causes no issue since these files only contain type information.

Overall conventions

  • All asynchronous actions return a Promise, even if not used by the components.
  • Important sections of files are marked with // # Section Name (same as markdown titles), sub-sections are marked with // ## Sub Section Name, and so on... This is there because I plan on adding support for this to Hyperstart's editor and to move my dev env there (eventually).

License

GPL

You can’t perform that action at this time.