sprout-platform
sprout-platform copied to clipboard
A modular application framework as a Spring Boot Starter. Use as a lib in your own project, or extend the default server with modules. Roll your own UI, or extend the default UI with plugins. CMS, LOB...
sprout-platform
Platform Build
Sprout Core
Sprout Spring Boot Starter
Sprout Server
This software uses an Open Source Initiative approved license.
What is Sprout?
Sprout is a web application framework, different than the dozens that already exist.
Similar to Ruby on Rails, Laravel, Django, and others - it facilitates rapid development of a web application.
- Provides default configurations
- Uses conventions and standards to develop and debug faster
Similar to WordPress.
- You can use the Sprout Server Docker image as a "no code" solution
- Custom css or third party plugins/modules can be added without recompiling the server.
Similar to other headless CMS.
- It's 'head optional'.
The provided UI is a stand-alone ReactJS application, but there's no requirement to use it.
Sprout is different than other frameworks -
- You can use it as an application dependency
Adding Sprout Starter to your Spring project allows customization, replacing default components, extend provided functionality, or turn off capabilities. - Non-Intrusive
Sprout can be replaced or removed with less effort than other frameworks due to abstractions.
You can use Sprout to standup a project, then replace implementations until it is no longer required.
Why not code generation?
Code generation has applicable use cases, but applications built on generated code can be difficult to update especially with customizations.
With Sprout as a dependency, customizations and modules are abstracted from the core application code, so you can update it like any other application dependency.
Use Cases
The Sprout Platform provides an extensible and modular application platform, so it's suitable for custom CMS, line-of-business, application portals, or other types of apps.
The modular design allows closed-source customizations to be applied for each unique case.
The development is currently sponsored by a rapidly growing restaurant franchise, using it as a "Enterprise Portal", where they can bring together disparate systems.
It's also being used as a line-of-business application to manage entities and data attributes, such as franchise location information, QA, and BI administration.
Please contact [email protected] if you are interested more in this use case.
Documentation
Go here for full documentation
The front-end UI uses a plugin
system to add or modify functionality.
Read more about the front-end
The back-end server uses a module
system to add or modify functionality. A module
may also provide plugins
to the UI.
Read more about the back-end
You may notice, inspiration [and some code] for the user-interface came from Grafana - an excellent dashboard application.
If there is a specific feature you'd like, or if you experience a bug, please open an issue here
If you're a develper, PRs are welcome!
If not, you can support this project by becoming a GitHub Project Sponsor, or through Patreon, or PayPal
Quick Start
Use the docker images to start an example server + web app.
docker-compose up
The example server creates a user -
username: admin
password: changeme!
Development
Required Software
If developing on Windows, it's recommended to use WSL2 with Docker Desktop
Install Docker Desktop and WSL2
Be sure to read the section about using vscode from inside linux
Frontend Development
If this is the first time you're running sprout, run the following commands:
rush update
rush build
Remote backend
If running the backend remotely, you may set the environment variable SERVER_API_URL
to the sprout api host.
Example using the demo server -
# *nix
export SERVER_API_URL=https://sprout-server.herokuapp.com/
# windows
SET SERVER_API_URL=https://sprout-server.herokuapp.com/
Local backend
You can also run the backend locally
From the root of the project -
Start the DB and Sprout Server using Docker Compose
docker compose -f docker/frontend-dev.yml up
Start frontend dev server
In another terminal start the web app -
rush start:web
Open the browser to http://localhost:3000 to access the web application.
Use the login admin
with password changeme!
Changes to the React app source code will reload the browser automatically.
The web app source code is located here - ./frontend/apps/webapp
Full Stack Development
From the root of the project -
Start the DB using Docker Compose
docker compose -f backend/server/docker-compose.yml up
Optionally, in another terminal, run continuous compilation for the sprout-spring-boot-starter Java project -
rush start:dev-watch
In another terminal, start Sprout in dev mode -
rush start:dev
If this is the first time you're running sprout, run the following commands:
rush update
rush build
In another terminal start the web app -
rush start:web
Examples
Live Server Demo
- username: admin
- password: changeme!
https://sprout-server.herokuapp.com/
Live Client Demo
- username: admin
- password: changeme!
https://sprout-web.herokuapp.com/
Screenshots
Default Website Landing Page
Editing a Panel
Panel Editor
File/Document Management
Build/Release
See the ./scripts/