/salt-app-kickstart

A CLI tool that can be installed as an npm package, featuring pre-installed Salt dependencies and templates such as AGGrid, Dashboard etc. Simplifies project setup by automatically launching on localhost.

Primary LanguageJavaScriptMIT LicenseMIT

🌟 Salt App Kickstart

npm npm

Create a new Salt Design System app quickly and easily.

πŸš€ Quick Start

To create a new Salt app, run:

npx salt-app-kickstart@latest

What happens next:

  • You’ll be prompted for a few details, such as the project name and template choice.
  • The tool will automatically create the project structure tailored to your specifications.
  • It will install all necessary dependencies for a smooth development experience.
  • Finally, your app will launch on localhost, allowing you to start coding immediately!

πŸŽ₯ Video Demonstration

Demonstration of the package

🌟 Why Salt App Kickstart?

  • Automatic Setup: Save time with pre-configured Salt Design System templates.
  • Flexible Templates: Includes popular templates like AGGrid and Dashboard.
  • Local Development: Automatically launches the app on localhost for immediate use.
  • GitHub Integration: Easily push your app to a GitHub repository.

πŸ›  Project Structure

Current Project Structure

salt-app-kickstart/
β”œβ”€β”€ templates/                  # Various project templates
β”œβ”€β”€ .gitignore                   # Files to be ignored by Git
β”œβ”€β”€ CODE_OF_CONDUCT.md           # Contributor code of conduct
β”œβ”€β”€ CONTRIBUTING.md              # Contribution guidelines
β”œβ”€β”€ KNOWN_ISSUES_AND_TASKS.md    # Document listing known issues
β”œβ”€β”€ LICENSE                      # License details
β”œβ”€β”€ check_install.js             # Script to verify installation prerequisites
β”œβ”€β”€ cli.js                       # Main entry point for the CLI tool
β”œβ”€β”€ copy_templates.js            # Utility for copying templates
β”œβ”€β”€ exec_childprocess.js         # Handles child processes
β”œβ”€β”€ install_dependencies.js       # Manages package installations
β”œβ”€β”€ package.json                 # Project metadata and dependencies
β”œβ”€β”€ package-lock.json            # Dependency lock file
β”œβ”€β”€ push_to_github.js            # Pushes project to GitHub
β”œβ”€β”€ readme.md                    # Project documentation
β”œβ”€β”€ run_in_localhost.js          # Launches app locally
└── video-thumbnail.png          # Thumbnail for demo video

Generated Project Structure

my-app/                         # Your newly created app
β”œβ”€β”€ public/                     # Static files for your app
β”œβ”€β”€ src/                        # Source code of your app
β”‚   β”œβ”€β”€ templates/              # Various app templates
β”‚   β”œβ”€β”€ App.css                 # Main styles
β”‚   β”œβ”€β”€ App.js                  # Main application logic
β”‚   β”œβ”€β”€ App.test.js             # Test cases for the main app
β”‚   β”œβ”€β”€ index.css               # Styles for the index
β”‚   β”œβ”€β”€ index.html              # Main HTML file to be served (copied from the current structure)
β”‚   β”œβ”€β”€ index.js                # Main entry point for the app (copied from the current structure)
β”‚   β”œβ”€β”€ logo.svg                # Logo for the app
β”‚   β”œβ”€β”€ reportWebVitals.js      # Performance reporting
β”‚   └── setupTests.js           # Setup for testing
β”œβ”€β”€ package-lock.json           # Dependency lock file
β”œβ”€β”€ package.json                # Project metadata and dependencies
└── README.md                   # Project documentation
  • Starting Point: The entry point of the application is cli.js, which contains command's abstract logic to initiate the setup process. From cli.js, different functions are called to execute various utility scripts, leading to the generation of the project structure. Key files, such as index.js and index.html, are copied from the current project structure to the newly created app, ensuring that users have a solid foundation to start their development.

πŸ›  Project Flowchart

  +-----------------------------------+
  |         Salt App Kickstart        |
  +-----------------------------------+
                  |
                  | 
                  v
  +-----------------------------------+
  |               cli.js              |
  +-----------------------------------+
  |        main entry point           |
  |(contains command's abstract logic)|
  +-----------------------------------+
                  |
                  | Calls
                  v
  +-----------------------------------+
  |       Various Utility Scripts     |
  +-----------------------------------+
  | check_install.js                  |
  | copy_templates.js                 |
  | exec_childprocess.js              |
  | install_dependencies.js           |
  | push_to_github.js                 |
  +-----------------------------------+
                  |
                  v
  +-----------------------------------+
  |             index.js              |  <--- Copied to the generated structure
  +-----------------------------------+
  | main application logic            |
  +-----------------------------------+
                  |
                  v
  +-----------------------------------+
  |            index.html             |  <--- Copied to the generated structure
  +-----------------------------------+
  | main HTML file                    |
  +-----------------------------------+
                  |
                  v
  +-----------------------------------+  
  |          Project Metadata          |
  +------------------------------------+
  | package.json                       |
  | package-lock.json                  |
  +------------------------------------+
                  |
                  v
  +-----------------------------------+
  |        Project Documentation      |
  +-----------------------------------+
  | README.md                         |
  | LICENSE                           |
  | CONTRIBUTING.md                   |
  | CODE_OF_CONDUCT.md                |
  | KNOWN_ISSUES_AND_TASKS.md         |
  | .gitignore                        |
  +-----------------------------------+

πŸ”§ Features

  • πŸ“¦ Pre-installed Salt Dependencies: Save time with built-in support for Salt Design System components.
  • πŸ“Š AGGrid and Dashboard Templates: Jumpstart your projects with ready-made grids and dashboards.
  • πŸ“± Local Dev Environment: The app automatically launches on localhost so you can start coding right away.
  • πŸ”— GitHub Integration: Quickly push your project to a GitHub repository with built-in commands.

πŸ’» Development Workflow

  1. Install dependencies:

    npm install
  2. Run the app:

    npm start

You can access your application by visiting http://localhost:3000 in your web browser. This will display your newly created app, allowing you to interact with it immediately.

  1. Build for production:

    npm run build

This creates an optimized, production-ready build of your app inside the build/ folder.

  1. Deploy your app to hosting services like GitHub Pages, Netlify, or Vercel. Each platform provides simple guides for deploying your app:

    • GitHub Pages: Push your build folder to a GitHub repository and enable GitHub Pages in the settings.
    • Netlify: Drag and drop your build/ folder to the Netlify dashboard for instant deployment.
    • Vercel: Connect your GitHub repository and follow the prompts to deploy.

🌐 Salt Design System Integration

The Salt Design System is pre-installed, offering reusable components and consistent UI elements for rapid development. With pre-styled components, you can focus on your app's logic and functionality while maintaining a cohesive design throughout your project.

πŸ™Œ Contributing

We welcome contributions! If you’d like to help improve this project, please check out our Contributing Guide for details on how to get involved.

πŸ“ License

This project is licensed under the MIT License. For more details, check the LICENSE file in this repository.

❓ Questions?

If you have any questions or suggestions, feel free to reach out. We’re here to help you build awesome apps with Salt!