The web framework for Golang

uAdmin the Golang Web Framework

Easy to use, blazing fast and secure.

go report card GoDoc codecov Build Status License: MIT

Originally open source by IntegrityNet Solutions and Services

For Documentation:

join gophers.slack.com

Social Media:

Screenshots

Dashboard Menu

Dashboard  

Log

Log  

Login Form

Login Form  

Features

  • AB Testing System
  • API Configuration
  • Approval System
  • Authentication and Permissions
  • Clean and sharp UI
  • Dashboard customization
  • Data Access API (dAPI)
  • Database schema migration
  • Error Handling
  • Export to Excel
  • Form and List customization
  • Image Cropping
  • IP address and port configuration
  • Log feature that keeps track of many things in your app
  • Metric System
  • Multilingual translation
  • MySQL Database Support
  • Offers FREE hosting for your app while you are developing by using a single command: uadmin publish
  • Pretty good security features (SSL, 2-Factor Authentication, Password Reset, Hash Salt, Database Encryption)
  • Public access to media
  • Self relation of foreign key/many2many
  • Sending an email from your app by establishing an email configuration
  • System settings which can be used system wide to keep application settings
  • Tag support for fields
  • Translation files preloading
  • Validation for user input
  • Webcam support on image and file fields

Minimum requirements

Operating System Architectures Notes
FreeBSD 10.3 or later amd64, 386 Debian GNU/kFreeBSD not supported
Linux 2.6.23 or later with glibc amd64, 386, arm, arm64, s390x, ppc64le CentOS/RHEL 5.x not supported. Install from source for other libc.
macOS 10.10 or later amd64 Use the clang or gcc that comes with Xcode for cgo support.
Windows 7, Server 2008 R2 or later amd64, 386 Use MinGW gcc. No need for cygwin or msys.
  • A C compiler is required only if you plan to use cgo.
  • You only need to install the command line tools for Xcode. If you have already installed Xcode 4.3+, you can install it from the Components tab of the Downloads preferences panel.

Hardware

  • RAM - minimum 256MB
  • CPU - minimum 2GHz

Software

  • Go Version 1.10 or later

Installation

$ go get -u github.com/uadmin/uadmin/...

To test if your installation is fine, run the uadmin command line:

$ uadmin
Usage: uadmin COMMAND [-e email] [-d domain]
This tools allows you to publish your project online

Commands:
  publish         This publishes your project online
  prepare         Generates folders and prepares static and templates
  version         Shows the version of uAdmin

Arguments:
  -e, --email     Your email. This is required for you to be able to maintain your project.
  -d, --domain    You can choose your domain name which will customize your URL

Get full documentation online:
https://uadmin.readthedocs.io/en/latest/

Your First App

Let's build your first app which is a Todo list. First, we will create a folder for your project and prepare it.

$ mkdir -p ~/go/src/github.com/your_name/todo
$ cd ~/go/src/github.com/your_name/todo
$ uadmin prepare
[   OK   ]   Created: /home/abdullah/go/src/github.com/your_name/todo/models
[   OK   ]   Created: /home/abdullah/go/src/github.com/your_name/todo/api
[   OK   ]   Created: /home/abdullah/go/src/github.com/your_name/todo/views
[   OK   ]   Created: /home/abdullah/go/src/github.com/your_name/todo/media
[   OK   ]   Created: /home/abdullah/go/src/github.com/your_name/todo/static
[   OK   ]   Created: /home/abdullah/go/src/github.com/your_name/todo/templates

Now use your code editor to create main.go and put this code inside it.

package main

import (
	"github.com/uadmin/uadmin"
	"time"
)

type Todo struct {
	uadmin.Model
	Name        string
	Description string `uadmin:"html"`
	TargetDate  time.Time
	Progress    int `uadmin:"progress_bar"`
}

func main() {
	uadmin.Register(Todo{})
	uadmin.StartServer()
}

Now to run your code (Linux and Apple macOS):

$ go build; ./todo
[   OK   ]   Initializing DB: [13/13]
[   OK   ]   Initializing Languages: [185/185]
[  INFO  ]   Auto generated admin user. Username: admin, Password: admin.
[   OK   ]   Synching System Settings: [30/30]
[   OK   ]   Server Started: http://0.0.0.0:8080
         ___       __          _
  __  __/   | ____/ /___ ___  (_)___
 / / / / /| |/ __  / __  __ \/ / __ \
/ /_/ / ___ / /_/ / / / / / / / / / /
\__,_/_/  |_\__,_/_/ /_/ /_/_/_/ /_/

In Windows:

$ go build && todo.exe
[   OK   ]   Initializing DB: [13/13]
[   OK   ]   Initializing Languages: [185/185]
[  INFO  ]   Auto generated admin user. Username: admin, Password: admin.
[   OK   ]   Synching System Settings: [46/46]
[   OK   ]   Server Started: http://0.0.0.0:8080
         ___       __          _
  __  __/   | ____/ /___ ___  (_)___
 / / / / /| |/ __  / __  __ \/ / __ \
/ /_/ / ___ / /_/ / / / / / / / / / /
\__,_/_/  |_\__,_/_/ /_/ /_/_/_/ /_/

Publish your app

To take your app live, it is simple:

$ uadmin publish
Enter your email: [email protected]
Your project will be published to https://my-proj.uadmin.io
Enter the name of your sub-domain (my-proj) [auto]: my-app
Did you change the default port from 8080?
This is the port you have in uadmin.Port = 8080
Enter the port that your server runs on [8080]:
[   OK   ]   Compressing [420/420]
[   OK   ]   Your application has been uploaded
[   OK   ]   Application installed succesfully
[   OK   ]   Your Project has been published to https://my-app.uadmin.io/

Quick Reference

Overriding Save Function

func (m *Model) Save() {
	// business logic
	uadmin.Save(m)
}

Validation

func (v Validate) Validate() (ret map[string]string) {
  ret = map[string]string{}
  if v.Name != "test" {
    ret["Name"] = "Error name not found"
  }
  return
}
Owner
uADMIN
uADMIN is the fully loaded web framework for Golang. www.integritynet.biz
uADMIN
Comments
  • $distinct for dAPI

    $distinct for dAPI

    $distinct returns only distinct values and eliminates duplicate records from the results. It can be used in aggregation operators such as COUNT, AVG, MIN, MAX, etc.

    $distinct has two values: 0 - false; 1 - true

    Sample structure:

    http://api.example.com/{ROOT_URL}/api/d/{MODEL_NAME}/read/?$f={FIELD_NAME}__count&$distinct={0,1}
    

    Equivalent to SQL Command:

    SELECT COUNT (DISTINCT field_name) FROM model_name
    
  • Events - uAdmin based application

    Events - uAdmin based application

    Hello! I'm doing my first apllication based on uAdmin. When I'm trying to open model Kit I got this Error: https://play.golang.org/p/hsENK7L0f2U

    Project: https://github.com/MarErm27/Events

  • SOS! How to work with currency in uAdmin?

    SOS! How to work with currency in uAdmin?

    1. I've tried to keep currency in int64 type and calculate everything in cents but int64 valuest can't be saved - bug?
    2. I've tried to keep currency in big.Float type - but SQ Lite have some errors with it.
    3. I've tried to keep currency in string type but my code become very difficult to read and to work with.
    4. Now I use float64 my code is relatively easy to read but using float64 for currency is a big NO and I must to find another way to work with currency.

    May be I just must change SQ Lite to MySQL? Do anyone know how to work with currency in uAdmin? Which way is preferred?

  • package github.com/uadmin/uadmin: exit status 128

    package github.com/uadmin/uadmin: exit status 128

    go get -u github.com/uadmin/uadmin/...

    cd /home/parallels/go/src/github.com/uadmin/uadmin; git submodule update --init --recursive

    fatal: No url found for submodule path 'sample_project/todo' in .gitmodules package github.com/uadmin/uadmin: exit status 128

    <--- when installing udamin i'll get this messages :-<

  • Data Access API Read does not work in JS

    Data Access API Read does not work in JS

    Greetings. I just want to say that Data Access API is one of the best feature ever so that I do not have to create an API file to access data. I accidentally found this from one of the closed issues. Fantastic!

    http://localhost:8080/api/d lists all information related to Data Access API. I access http://localhost:8080/api/d/restaurant/read to read all Restaurant data.

    {
      "result": [
        {
          "ID": 1,
          "DeletedAt": null,
          "Name": "Burger King",
          "Address": ""
        },
        {
          "ID": 2,
          "DeletedAt": null,
          "Name": "Domino's Pizza",
          "Address": ""
        },
        {
          "ID": 3,
          "DeletedAt": null,
          "Name": "Subway",
          "Address": ""
        },
        {
          "ID": 4,
          "DeletedAt": null,
          "Name": "Panda Express",
          "Address": ""
        }
      ],
      "status": "ok"
    }
    

    but performing in JS, i got this error

    {
      "err_msg": "Permission denied",
      "status": "error"
    }
    

    Any advices please?

  • translateSchema unexported name

    translateSchema unexported name

    Hi! May I ask, why function translateSchema is unexported? What I have to do if I want to translate the schema of a model to my Html file?

    About translateSchema function: At path "\static\i18n\models" I have file auction.ru.json, which is a file for translation to the Russian language. Function translateSchema translates the model's field name to another language. My model's name is Auctions and in this file, I have a string that translates it to Аукциона "display_name": "Translate me ---> Аукцион", And depends on the language I want to show translated schema fields in my Html template.

  • Read the docs update

    Read the docs update

    Hello! Any news on read the docs? Because if the update will take long, I think you need to hire more people to accelerate development. This is my reminder because I am using your framework mainly for one of my projects, working in an IT industry.

  • uAdmin Tutorial Part 11 - 12 work with .html

    uAdmin Tutorial Part 11 - 12 work with .html

    Hello! Thank you for very detailed tutorial. I was wondering if I can ask for a help here. I'm trying to implement to uAdmin this little project that contains only two files: index.html https://play.golang.org/p/ZePVD23GSGe main.go https://play.golang.org/p/3Si83gR04Hg

    It looks like this: image You can click a button to turn it on or off. My friend helped me with this.

    Based on uAdmin Tutorial Part 11 - 12 I've made this files:

    1. templates/tokens.html - which is a copy of index.html from above. https://play.golang.org/p/thVQLf3MGlv
    2. views/tokens_view.go https://play.golang.org/p/MmxV5I91z9q

    And made a change to file views/view.go

    	if strings.HasSuffix(r.URL.Path, "/tokens") {
    		TokensHandler(w, r)
    		return
    	}
    

    I go to http://localhost:8080/http_handler/tokens and when I click On or Off it redirects me to http://localhost:8080/ instead of turning it Off or On. Please help, what am I doing wrong?

  • Dockerized application issues

    Dockerized application issues

    Hello,

    The docs and the readme lacks the docker part. Can I suggest a sample Dockerfile for tutorial application ?

    FROM golang:1.17-alpine AS build-go
    RUN set -ex ;\
        apk upgrade --no-cache --available ;\
        apk add --no-cache build-base
    WORKDIR /src
    ARG GOPROXY
    ARG GONOSUMDB
    ARG GOPRIVATE
    RUN go install github.com/uadmin/uadmin/cmd/uadmin@latest
    ADD go.mod go.sum ./
    RUN go mod download
    ADD . ./
    RUN go generate ./...
    RUN go vet ./...
    RUN go install ./...
    
    FROM alpine:edge
    RUN set -ex ;\
        apk upgrade --no-cache --available ;\
        apk add --no-cache tzdata rrdtool
    WORKDIR /app
    COPY --from=build-go /go/bin/eval-uadmin /app/bin
    COPY --from=build-go /src/templates/ /app/templates/
    COPY --from=build-go /src/static/ /app/static/
    ENTRYPOINT [ "/app/bin" ]
    

    I have issues with logging :

    [  ERROR ]   Hanlder.NewLogger. Unix syslog delivery error
    
  • Login system tutorial

    Login system tutorial

    I follow the steps exactly but I see many errors in my command prompt when i am working on my application like login access, html render and many more. What is causing this??

    https://uadmin-docs.readthedocs.io/en/latest/login_system/tutorial/part4.html

  • Root URL setting

    Root URL setting

    When I change value for my Root URL setting to /Admin page with address http://localhost:8080/ starts to give me 404 error. image So I add a handler to redirect it to /Admin page. image I've changed Root URL setting by advice of @Spotlight64 to make Api tutorial work for me.

    Did I did everything right?

  • Improved uadmin version

    Improved uadmin version

    Hello guys. I worked on it 4 months and now it's officially ready to be used. There are some minor issues. But in general it's ready: https://github.com/sergeyglazyrindev/uadmin Docs: https://uadmindocs.sergeyg.me/docs/intro Features:

    1. More cleaner code
    2. Full gorm support, no need to prevent sql injections, because everything handled by Gorm.
    3. Migrations
    4. Blueprint system.
    5. Nice and easy to use command system that let you easily add your own custom commands
    6. Embedded static files and templates, no need to deploy it with your project, now you just need only binary
    7. Almost everything from old uadmin works good.
    8. Powerful form system that could be used to produce almost anything in the admin panel.
    9. Make helpers to keep your code clean: like make fmt (formattes code), make lint (validates your code against standarts), make docker-image, etc
    10. Easy to expand/customize and with a great perspectives.
  • Foreign Key ID still have value even if the foreign key item has been deleted

    Foreign Key ID still have value even if the foreign key item has been deleted

    Suppose I have a queue model that has four records, one of them has no foreign key because I deleted it.

    Untitled

    But after I checked in dAPI, the foreign key ID is still not 0.

  • Filter out deleted records in the foreign key fields

    Filter out deleted records in the foreign key fields

    We're creating a system that fetches records from the database. The user of our system wants that item to be deleted in the item page for example so once that item has been deleted in the database, it will also disconnect that record in the foreign key from the parent record. Although we can still see the deleted record in the logs or using $deleted from dAPI, filtering them out and reconnecting to the foreign key from parent record is a difficult task to achieve in fact that we are using this for special cases such as monthly reports.

    The business goal is, even if the record has been deleted from the database, it can still fetch the data (deleted record) from the specific foreign key.

  • Interactive mobile app for uadmin

    Interactive mobile app for uadmin

    I am truly amazed with your library!! Can you make a mobile application of uadmin with tutorials, reference, quiz, activities, projects and many more. It's like merriam webster educational type so i can use it even without an internet connection. You can also communicate with members and moderators if you need assistance through an application. Besides this, add achievements and course progress in my profile like if I reach 50% progress in the first chapter of the course will receive an award. I hope to see it happen in the near future.

  • Consider adding more templates?

    Consider adding more templates?

    There is only one available template in uadmin that is the default. It would be nice to have built in Choose your template in the settings where you can select different number of templates such as Seasonal, Business, Academic, Dark view and many others.

Eudore is the core of a golang lightweight web framework.

Eudore eudore是一个golang轻量级web框架核心,可以轻松扩展成一个技术栈专用框架,具有完整框架设计体系。 反馈和交流请加群组:QQ群373278915。 Features 易扩展:主要设计目标、核心全部解耦,接口即为逻辑。 简单:对象语义明确,框架代码量少复杂度低,无依赖库。 易用

Nov 7, 2022
Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.
Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.

Gin Web Framework Gin is a web framework written in Go (Golang). It features a martini-like API with performance that is up to 40 times faster thanks

Jan 2, 2023
a golang web mvc framework, like asp.net mvc.

goku goku is a Web Mvc Framework for golang, mostly like ASP.NET MVC. doc & api Installation To install goku, simply run go get github.com/QLeelulu/go

Dec 7, 2022
Fast and Reliable Golang Web Framework
Fast and Reliable Golang Web Framework

Gramework The Good Framework Gramework long-term testing stand metrics screenshot made with Gramework Stats Dashboard and metrics middleware What is i

Dec 18, 2022
The web framework for Golang
The web framework for Golang

uAdmin the Golang Web Framework Easy to use, blazing fast and secure. Originally open source by IntegrityNet Solutions and Services For Documentation:

Dec 24, 2022
An ideally refined web framework for Go.

Air An ideally refined web framework for Go. High-performance? Fastest? Almost all web frameworks are using these words to tell people that they are t

Dec 15, 2022
Web framework for creating apps using Go in Google AppEngine

Welcome to app.go v3.0 app.go is a simple web framework for use in Google AppEngine. Just copy the app folder to your working folder and import it fro

Mar 21, 2021
Goal is a toolkit for high productivity web development in Go language in the spirit of Revel Framework that is built around the concept of code generation.

Goal Goal is a set of tools for high productivity web development in Go language. Goal, being mostly inspired by Revel Framework and its discussions,

Sep 27, 2021
A high level web-framework for Go

go-start is a high level web-framework for Go, like Django for Python or Rails for Ruby. Installation: go get github.com/ungerik/go-start Documentatio

Dec 24, 2022
A lightweight RESTful web framework for Go
A lightweight RESTful web framework for Go

Goweb A lightweight RESTful web framework for Go. For examples and usage, please read the Goweb API Documentation Read our Articles Who uses Goweb? "U

Dec 12, 2022
Mango is a modular web-application framework for Go, inspired by Rack, and PEP333.

Mango Mango is a modular web-application framework for Go, inspired by Rack and PEP333. Note: Not actively maintained. Overview Mango is most of all a

Nov 17, 2022
Classy web framework for Go

Martini NOTE: The martini framework is no longer maintained. Martini is a powerful package for quickly writing modular web applications/services in Go

Dec 29, 2022
A Go framework for building JSON web services inspired by Dropwizard

Tiger Tonic A Go framework for building JSON web services inspired by Dropwizard. If HTML is your game, this will hurt a little. Like the Go language

Dec 9, 2022
Simple web framework for go, still quite beta at this point

WFDR Framework - Beta Release New 18/Feb/2012: Updated for go 1.0, new directory layout to take advantage of the go build tool. Background There's a m

Feb 11, 2021
🍐 Elegant Golang REST API Framework
🍐 Elegant Golang REST API Framework

An Elegant Golang Web Framework Goyave is a progressive and accessible web application framework focused on REST APIs, aimed at making backend develop

Jan 4, 2023
A lightweight MVC framework for Go(Golang)

utron utron is a lightweight MVC framework in Go (Golang) for building fast, scalable and robust database-driven web applications. Features Postgres,

Dec 31, 2022
Golang CTF framework and exploit development module

Golang CTF framework and exploit development module

Dec 18, 2022
:bullettrain_side: High-performance web server for Go.
:bullettrain_side: High-performance web server for Go.

Aero is a high-performance web server with a clean API. Installation go get -u github.com/aerogo/aero/... Usage Run this in an empty directory: aero -

Dec 8, 2022
package for building REST-style Web Services using Go

go-restful package for building REST-style Web Services using Google Go Code examples using v3 REST asks developers to use HTTP methods explicitly and

Jan 1, 2023