Build high-performance apps swiftly with minimal team resources in Go programming language. SUPERKIT is a full-stack web framework that provides a set of tools and libraries to help you build web applications quickly and efficiently. SUPERKIT is built on top of the Go programming language and is designed to be simple and easy to use.
The project (for now) is in the experimental phase.
- SUPERKIT
- Installation
- Getting started
- Migrations
- Creating views with Templ
- Validations
- Testing
- Create a production release
To create a new SUPERKIT project, you can run the following command:
# Create your SUPERKIT project in a single command:
go run github.com/anthdm/superkit@master [yourprojectname]
# You can now navigate to your project:
cd [myprojectname]
# Run npm install to install both tailwindcss and esbuild locally.
npm install
# If you run into dependency issues you can run:
go clean -modcache && go get -u ./...
# If you have the authentication plugin enabled you need to migrate your database.
make db-up
The SUPERKIT project structure is designed to be simple and easy to understand. The project structure is as follows:
├── bootstrap
│ ├── app
│ ├── assets
│ ├── conf
│ ├── db
│ ├── migrations
│ ├── events
│ ├── handlers
│ ├── types
│ ├── views
│ ├── components
│ ├── errors
│ ├── landing
│ ├── layouts
│ ├── cmd
│ ├── app
│ ├── scripts
│ ├── seed
│ ├── plugins
│ ├── auth
│ ├── public
│ ├── assets
│ ├── env.local
│ ├── go.mod
│ ├── go.sum
│ ├── Makefile
│ ├── package-lock.json
│ ├── package.json
│ ├── tailwind.config.js
├── db
├── event
├── kit
│ ├── middleware
├── validate
├── view
├── go.mod
├── install.go
├── README.md
Assets are stored in the assets
directory. This directory contains all your CSS and JavaScript files. The assets
directory is structured as follows:
assets
├── css
│ ├── app.css
├── js
│ ├── app.js
Configuration. First, config.yml is read, then environment variables overwrite the yaml config if they match. The config structure is in the config.go. The env-required: true tag obliges you to specify a value (either in yaml, or in environment variables).
Reading the config from yaml contradicts the ideology of 12 factors, but in practice, it is more convenient than reading the entire config from ENV. It is assumed that default values are in yaml, and security-sensitive variables are defined in ENV.
The db
directory contains all your database related files. The db
directory is structured as follows:
db
├── migrations
│ ├── 20210919123456_create_users_table.sql
├── seeds
│ ├── seed.go
The events
directory contains all your event related files. These files are used to define custom events and event handlers for the project. The events
directory is structured as follows:
events
├── event.go
The handlers
directory contains the main handlers or controllers for the project. These handlers handle incoming requests, perform necessary actions, and return appropriate responses. They encapsulate the business logic and interact with other components of the project, such as services and data repositories.
It is important to note that the project structure described here may not include all the directories and files present in the actual project. The provided overview focuses on the key directories relevant to understanding the structure and organization of the project.
The types
directory contains all your type related files. For example, you can define your models, structs, and interfaces in this directory. The types
directory is structured as follows:
types
├── user.go
├── auth.go
The views
directory contains all your view related files. These files are used to render HTML templates for the project. The views
directory is structured as follows:
views
├── home.go
├── about.go
You can run the development server with the following command:
make dev
Hot reloading is configured by default when running your application in development.
NOTE: on windows or on in my case (WSL2) you might need to run
make watch-assets
in another terminal to watch for CSS and JS file changes.
make db-mig-create add_users_table
The command will create a new migration SQL file located at app/db/migrations/add_users_table.sql
make db-up
make db-reset
make db-seed
This command will run the seed file located at cmd/scripts/seed/main.go
superkit uses Templ as its templating engine. Templ allows you to create type safe view components that renders fragments of HTML. In-depth information about Templ can be found here: Templ documentation
todo
superkit will compile your whole application including its assets into a single binary. To build your application for production you can run the following command:
make build
This will create a binary file located at /bin/app_prod
.
Make sure you also set the correct application environment variable in your .env
file.
SUPERKIT_ENV = production