create-storm-stack
v0.1.0
Published
Official CLI utility for the STORM Stack
Downloads
5
Maintainers
Readme
S.T.🌀.R.M Stack CLI (beta)
Introducing the S.T.🌀.R.M Stack, the easiest way to create modern fullstack web application. We believe that using S.T.🌀.R.M will be a breeze 🙃
Requirements
The S.T.🌀.R.M stack has a few core requirements shown below
- Python 3.8+
- NodeJs 18.x
- Pipenv (refer to changes to Python's handling of modules or just install it with Homebrew)
Supported Platforms
The S.T.🌀.R.M Stack CLI aims to be platform-agnostic once the core dependencies are met. That said, below shows platform support currently.
- ✅ Linux (Ubuntu 22.04+)
- ✅ MacOS
- ✅ Windows
The Main Stack
- Starlette (Web Framework)
- Tailwind CSS (Styling)
- Reactive UI (Vite)
- MongoDB (Database)
Things to keep in mind
- This is an early version of the CLI and things may change in future versions
- Some things might not work properly with later versions or Python
- When running on windows, it is better to use
Powershell
orGitbash
when runningstorm-dev
vianpm
Creating your first S.T.🌀.R.M Stack project
Creating the project
To create your first project, in a terminal window, run the following and answer the prompts
npx create-storm-stack@latest
The command above will start the scaffolding process. Once you answer all the prompts, the process will start. Once completed, the instructions for running the project will be printed out.
Project Naming Conventions
Import note: Project names follow Python conventions so spaces or special characters are not allowed
- ✅ my_storm_project
- ✅ mystormproject
- ⛔ my-storm-project
- ⛔ my storm project
Running your project
Activate the virtual environment
pipenv shell
Run the project
npm run storm-dev
By default, your newly created S.T.🌀.R.M Stack project will be accessible from http://127.0.0.1:5000
Database Stuff
The default database for your newly created S.T.🌀.R.M Stack project will have the same name as your project.
For example, if your project was called my_project
the mongodb uri would be mongodb://localhost:27017/my_project
.
Note: You may change the database settings as needed for your project.
S.T.🌀.R.M Stack Module System
The S.T.🌀.R.M Stack makes use of modules where a module is a collection of backend (controller + model) and optional frontend components. You can think of modules kinda like resources. More information on this will be in the official documentation.
Creating a module
From the root of your S.T.🌀.R.M Stack project, you can run the following command to create a module
npx create-storm-stack@latest makeModule --name <module_name> [--plural <pluralized_module_name> --controllerOnly]
Note: the only required option is --name <module_name>
-name <module_name>
: specifies the name of the module to be created. This name must be unique and follows the same naming conventions as above--plural <pluralized_module_name>
: optionally specifies the pluralized name of the module. Setting this will make API endpoints and frontend paths more REST-like--controllerOnly
: optionally specifies if the creation of frontend components should be skipped for the module being created
Examples of module creation
Here are a few examples to get you started with creating your own modules
Example of making a normal module
npx create-storm-stack@latest makeModule --name biscuit --plural biscuits
Example of making an api-only module
npx create-storm-stack@latest makeModule --name lemon --plural lemons --controllerOnly
Accessing your newly-created module
When a module is created, your can access the corresponding api endpoint at http://127.0.0.1:5000/api/<module_name>
or http://127.0.0.1:5000/api/<pluralized_module_name>
Frontend components can be accessed at the http://127.0.0.1:5000/#/<module_name>
or http://127.0.0.1:5000/#/<pluralized_module_name>
.
Note: Further details will be provided in the developer docs/manual
Important Files & Folders (Module)
When a module is created, several file are created and others are updated as shown below.
storm_modules/storm_modules.json
: this file manages the entire module systemstorm_controllers
: controllers created will be added to this folder. Thestorm_controllers/__init__.py
file will be automatically updatedstorm_routes/__init__.py
: This file is automatically updated when a module is created. There is no need to manually update thisstorm_models
: models created will be added to this folder.storm_fe_<frontend>/src/pages
: Frontend components will be added to this folder.
Note: More details will be provided in the developer docs/manual