Currently the DX (Developer Experience) of working on apollos powered sites, apps, or the core framework is frustratingly difficult. This doc serves as a discussion point for improvements, particuarly through the idea of consolidation of apollos projects into a monolith.
- junction
- apollos-rock (sync)
- apollos-core
- apollos-give
- my.newspring.cc (site repo)
- newspring-app (app repo)
- Junction
- Heighliner
- Apollos (core, give, community, profile)
- newwwwspring.cc (my.newspring.cc site repo)
- newspring-app (app repo)
- Junction (css framework) [UI] (near LTS)
- Heighliner (GraphQL application) [Data] (v0.5 with 1.0 in the works)
- Apollos (sites, component library, deploy scripts, local dev process, migrations, etc) [Client] (Not versioned)
- Supports multiple sites / apps
- newspring.cc (s/a)
- newspringnetwork.com (s/a)
- newspringfuse.com (s/a)
- perrynoble.com (s/a)
- newspringcollege.com (s/a)
- kidspring.com (eventual)
- newspring.io (eventual)
Eventually, I want these site level folder to be pretty thin, as they should use dynamic templates / pages via a GUI in Rock.
- Supports web and app code side by side.
- Supports a UI component library (which is deployable as its own site?)
- Supports deployment strategies on a per site basis.
- Supports running our apollos infrastructure (including Rock eventually) via Docker
- Supports a command line tool to assist if needed (e.g a
bin
folder andapollos run newspring.cc newspringfuse.com --ios
or something of the like. - Has a clear and easy to understand strucutre within sites and within the core system folder
- Has a clear and easy to understand strucuture for writing tests
- Has a clear and easy to understand strucuture for writing documentation
- One line to get up and running
How do we determine what is core vs what is a site? Where does core live? How do we version projects? (This is very important to me) How do we share code between sites? Where does our embed library fit into this?