Platform Build
Sprout Core
Sprout Spring Boot Starter
Sprout Server
This software uses an Open Source Initiative approved license.
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.
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.
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.
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
Use the docker images to start an example server + web app.
docker-compose up
The example server creates a user -
username: admin
password: changeme!
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
If this is the first time you're running sprout, run the following commands:
rush update
rush build
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/
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
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
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
- username: admin
- password: changeme!
https://sprout-server.herokuapp.com/
- username: admin
- password: changeme!
https://sprout-web.herokuapp.com/
See the ./scripts/