No project description provided
Project description
Universal Initializer
A versatile tool for initializing software projects from templates. Create React, Python, C++, Node.js, iOS, Android, and more projects with a single command.
Features
- Configurable template-based project creation
- Support for multiple project types (React, Vue, Flutter, and many more)
- Parameter-based customization
- Variable replacement in template files
- Post-processing support for additional setup tasks
- JSON output for integration with other tools
Installation
# Install with pip
pip install universalinit
# Or install directly from source
git clone https://github.com/Kavia-ai/universalinit.git
cd universalinit
pip install -e .
Usage
Create a new project using the command-line interface:
uniinit --name my-app --type react --output ./my-app --author "Your Name" --parameters typescript=true,styling_solution=styled-components
Command Options
| Option | Description | Example |
|---|---|---|
--author |
Project author (Required) | --author "Your Name" |
--config |
Path to JSON config file | --config ./my-config.json |
--description |
Project description | --description "An awesome app" |
--name |
Project name (Required) | --name my-awesome-app |
--output |
Output directory path (Required) | --output ./my-app |
--parameters |
Additional parameters as key=value pairs | --parameters typescript=true,styling_solution=styled-components |
--type |
Project type (Required) | --type react |
--version |
Project version | --version 0.1.0 |
Available Project Types
android: Android applicationangular: Angular applicationastro: Astro websiteflutter: Flutter applicationnativescript: NativeScript applicationnextjs: Next.js applicationnuxt: Nuxt.js applicationqwik: Qwik applicationreact: React applicationremix: Remix applicationremotion: Remotion video projectslidev: Slidev presentationsvelte: Svelte applicationtypescript: TypeScript applicationvite: Vite applicationvue: Vue applicationdjango: Django backendexpress: Express backendfastapi: FastAPI backendflask: Flask backend
Parameter Examples
React Project
uniinit --name my-react-app --type react --output ./my-react-app --author "Your Name" --parameters typescript=true,styling_solution=styled-components
Vue Project
uniinit --name myservice --type vue --output ./myservice --author "Your Name"
Flutter Project
uniinit --name my-flutter-app --type flutter --output ./my-flutter-app --author "Your Name"
Android Project
uniinit --name my-android-app --type android --output ./my-android-app --author "Your Name" --parameters min_sdk=24,target_sdk=34,gradle_version=8.12
Astro Project
uniinit --name my-astro-site --type astro --output ./my-astro-site --author "Your Name" --parameters typescript=true
Next.js Project
uniinit --name my-nextjs-app --type nextjs --output ./my-nextjs-app --author "Your Name" --parameters typescript=true,styling_solution=tailwind
Nuxt Project
uniinit --name my-nuxt-app --type nuxt --output ./my-nuxt-app --author "Your Name"
NativeScript Project
uniinit --name my-ns-app --type nativescript --output ./my-ns-app --author "Your Name" --parameters typescript=true
Slidev Project
uniinit --name my-slides --type slidev --output ./my-slides --author "Your Name"
Svelte Project
uniinit --name my-svelte-app --type svelte --output ./my-svelte-app --author "Your Name" --parameters typescript=true,styling_solution=css
Remix Project
uniinit --name my-remix-app --type remix --output ./my-remix-app --author "Your Name" --parameters typescript=true,styling_solution=tailwind
TypeScript Project
uniinit --name my-ts-app --type typescript --output ./my-ts-app --author "Your Name"
Remotion Project
uniinit --name my-remotion-app --type remotion --output ./my-remotion-app --author "Your Name"
Angular Project
uniinit --name my-angular-app --type angular --output ./my-angular-app --author "Your Name"
Qwik Project
uniinit --name my-qwik-app --type qwik --output ./my-qwik-app --author "Your Name"
Vite Project
uniinit --name my-vite-app --type vite --output ./my-vite-app --author "Your Name" --parameters typescript=true,framework=react
Django Project
uniinit --name my-django-app --type django --output ./my-django-app --author "Your Name"
Express Project
uniinit --name my-express-app --type express --output ./my-express-app --author "Your Name" --parameters typescript=true
FastAPI Project
uniinit --name my-fastapi-app --type fastapi --output ./my-fastapi-app --author "Your Name"
Flask Project
uniinit --name my-flask-app --type flask --output ./my-flask-app --author "Your Name"
JSON Configuration
Instead of command-line parameters, you can use a JSON configuration file:
{
"name": "my-app",
"version": "1.0.0",
"description": "My awesome application",
"author": "Your Name",
"project_type": "react",
"output_path": "./my-app",
"parameters": {
"typescript": true,
"styling_solution": "styled-components"
}
}
Then use:
uniinit --config ./my-config.json
Development
Running Tests
# Install dev dependencies
pip install pytest
# Run tests
pytest
Adding New Templates
- Create a new directory in
src/universalinit/templates/for your template - Add a
config.ymlfile with template configuration - Add new template type in
ProjectTypeenum insrc/universalinit/templateconfig.py - Add new replaceable parameters if necessary in the function
ProjectConfig.get_replaceable_parametersinsrc/universalinit/templateconfig.py - Add new environment parameters if necessary in the function
TemplateConfigProvider.get_init_infoinsrc/universalinit/templateconfig.py - Add new template at
TEMPLATE_MAPinsrc/universalinit/templates.py - Register the template class in the
ProjectInitializerconstructor insrc/universalinit/universalinit.py - Create a new template class in
src/universalinit/universalinit.py - Update the epilog in
maininsrc/universalinit/cli.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file universalinit-0.1.53.tar.gz.
File metadata
- Download URL: universalinit-0.1.53.tar.gz
- Upload date:
- Size: 2.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.3 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e48ddb121370e81555dc4e66102dbf7f6c2a4867d69043be8af8662a24fab37f
|
|
| MD5 |
c0aae65c52cd9a8da53832717d39188c
|
|
| BLAKE2b-256 |
e93fcef2cbd3ecde526955b9ac84c4d957fbc694a8700fb318622ec2cd1c0625
|
File details
Details for the file universalinit-0.1.53-py3-none-any.whl.
File metadata
- Download URL: universalinit-0.1.53-py3-none-any.whl
- Upload date:
- Size: 3.0 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.3 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f273f748c7368926084222bcc50dba5a13b52cd65d0e87119bc24cdd59a4028b
|
|
| MD5 |
40c2525cdb0bb3cd82d36d6cc7baea5a
|
|
| BLAKE2b-256 |
b394ef82cfbd305025657378699ff75956fff4d3b287b4f1bfdc6366572f9e9f
|