The web framework for Golang

Overview

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
}
Issues
  • $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
    
    opened by rn1hd 30
  • 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

    help wanted 
    opened by MarErm27 30
  • 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?

    help wanted 
    opened by MarErm27 28
  • 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 :-<

    opened by CharleGutierrez 26
  • 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?

    opened by alphakitchown 20
  • 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.

    opened by MarErm27 19
  • 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.

    opened by dxlvgcw 14
  • 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?

    discussion 
    opened by MarErm27 14
  • 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

    opened by dxlvgcw 10
  • 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?

    enhancement 
    opened by MarErm27 9
  • [  ERROR ]   DB error in Filter(set). record not found

    [ ERROR ] DB error in Filter(set). record not found

    Hi, I search for items like this uadmin.Filter(&auctions, "number_of_collection = ?", key)

    they are not found, but it's writing to log the message

    [  ERROR ]   DB error in Filter(set). record not found
    

    how to tell it that it totally fine if there are no items found, I just checking? How to handle this error?

    opened by MarErm27 8
  • database refacto : added

    database refacto : added "driver" to avoid "if" in code

    To avoid "if Database.Type == " calls in code, I have rewritten parts to use a "driver", that contains specific code. Easier to read and maintain. Also added the driver skeleton for postgresql

    opened by maitredede 1
  • Oauth authentication

    Oauth authentication

    Hello, I would like to provide oauth authentication (Keycloak, facebook, google, gitlab, github...), with configurable account merge/association policy.

    opened by maitredede 0
  • [Snyk] Security upgrade engine.io-client from 1.5.4 to 3.1.1

    [Snyk] Security upgrade engine.io-client from 1.5.4 to 3.1.1

    This PR was automatically created by Snyk using the credentials of a real user.


    Snyk has created this PR to fix one or more vulnerable packages in the `npm` dependencies of this project.

    merge advice

    Changes included in this PR

    • Changes to the following files to upgrade the vulnerable dependencies to a fixed version:
      • static/uadmin/assets/socket.io-client/package.json

    Vulnerabilities that will be fixed

    With an upgrade:

    Severity | Priority Score (*) | Issue | Breaking Change | Exploit Maturity :-------------------------:|-------------------------|:-------------------------|:-------------------------|:------------------------- low severity | 399/1000
    Why? Has a fix available, CVSS 3.7 | Regular Expression Denial of Service (ReDoS)
    npm:ms:20170412 | Yes | No Known Exploit

    (*) Note that the real score may have changed since the PR was raised.

    Commit messages
    Package name: engine.io-client The new version differs by 250 commits.
    • b949abc [chore] Release 3.1.1
    • 11f3fdd [test] Launch browser tests on localhost by default (#571)
    • 753c180 [chore] Unpin debug version (#568)
    • fce140a [chore] Release 3.1.0
    • 32fe4e5 [chore] Bump engine.io-parser to version 2.1.1 (#566)
    • be73a9c [chore] Pin debug to version 2.6.4 (#567)
    • 7aad0d6 [chore] Bump engine.io-parser to version 2.1.0 (#565)
    • cfb2775 [chore] Bump ws to version 2.3.1 (#564)
    • f7be578 [chore] Bump debug to version 2.6.4 (#563)
    • 3e03346 [refactor] Set responseType based on 'Content-Type' header (#562)
    • 51d7529 [chore] Release 3.0.0
    • 7a72404 [chore] Bump dependencies (#560)
    • beb7090 [fix] Default `rejectUnauthorized` to `true` (#558)
    • 82f3f61 [chore] Drop support for old nodejs versions (0.10 & 0.12) (#557)
    • 4c021d3 [chore] Release 2.1.1 (#556)
    • 56bf176 [chore] Bump engine.io-parser to version 2.0.2 (#555)
    • 0d2cc68 [chore] Release 2.1.0 (#550)
    • 3ba6fa1 [chore] Bump engine.io-parser to version 2.0.1 (#549)
    • 8f04149 [chore] Bump concat-stream to version 1.5.2 (#548)
    • 1519765 [feat] Allow to set the protocols for the websocket transport (#546)
    • be4c906 [chore] Release 2.0.2 (#541)
    • 144a7fd [chore] Bump ws to version 1.1.2 (vulnerability fix) (#539)
    • 22c28a2 [fix] Fix extraHeaders option in browser (#536)
    • f756bd6 [chore] Release 2.0.1 (#534)

    See the full diff

    Check the changes in this PR to ensure they won't cause issues with your project.


    Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.

    For more information: 🧐 View latest project report

    🛠 Adjust project settings

    📚 Read more about Snyk's upgrade and patch logic


    Learn how to fix vulnerabilities with free interactive lessons:

    🦉 Learn about vulnerability in an interactive lesson of Snyk Learn.

    opened by TwistedHardware 1
  • [Snyk] Fix for 1 vulnerabilities

    [Snyk] Fix for 1 vulnerabilities

    This PR was automatically created by Snyk using the credentials of a real user.


    Snyk has created this PR to fix one or more vulnerable packages in the `npm` dependencies of this project.

    Changes included in this PR

    • Changes to the following files to upgrade the vulnerable dependencies to a fixed version:
      • static/uadmin/assets/socket.io/package.json

    Vulnerabilities that will be fixed

    With an upgrade:

    Severity | Priority Score (*) | Issue | Breaking Change | Exploit Maturity :-------------------------:|-------------------------|:-------------------------|:-------------------------|:------------------------- low severity | 399/1000
    Why? Has a fix available, CVSS 3.7 | Regular Expression Denial of Service (ReDoS)
    npm:ms:20170412 | Yes | No Known Exploit

    (*) Note that the real score may have changed since the PR was raised.

    Commit messages
    Package name: debug The new version differs by 196 commits.
    • 6bb07f7 release 2.6.7
    • 15850cb Fix Regular Expression Denial of Service (ReDoS)
    • 4a6c85c update "debug" to v1.0.0 (#454)
    • b68dbf8 Fix typo (#455)
    • 1351d2f Inline extend function in node implementation (#452)
    • c211947 update version for component
    • 14df14c release 2.6.5
    • cae07b7 cleanup browser tests and fix null reference check on window.documentElement.style.WebkitAppearance (#447)
    • f311b10 release 2.6.4
    • 1f01b70 Fix bug that would occure if process.env.DEBUG is a non-string value. (#444)
    • 2f3ebf4 Update CHANGELOG.md
    • f5ae332 Update CHANGELOG.md
    • 9742c5f chore(): ignore bower.json in npm installations. (#437)
    • 27d93a3 update "debug" to v0.7.3
    • 9dc30f8 release 2.6.3
    • 0fb8ea4 LocalStorage returns undefined for any key not present (#431)
    • ce4d93e changelog fix
    • 017a9d6 release 2.6.2
    • 23bc780 fix DEBUG_MAX_ARRAY_LENGTH
    • 065cbfb Add backers and sponsors from Open Collective (#422)
    • 918d686 Revert "add Slackin invite badge"
    • f46d671 add Slackin invite badge
    • 580a7a1 changed slackin url
    • 9f33c9a added slackin

    See the full diff

    Package name: engine.io The new version differs by 215 commits.
    • 935b155 [chore] Release 3.1.0
    • 82ed65f [test] Add test for maxHttpBufferSize option with websocket (#499)
    • 519fb8d [chore] Bump uws to version 0.14.4 (#501)
    • 7edb34e [chore] Bump dependencies (#500)
    • 07d57d5 [chore] Release 3.0.0
    • fb7e2be [chore] Bump dependencies (#498)
    • 57b7e5b [chore] Bump uws to version 0.14.1 (#497)
    • ec5d208 [chore] Merge 2.1.x branch (#494)
    • 120611f [chore] Bump ws to version 2.2.0 (#487)
    • b436ca3 [chore] Drop support for old nodejs versions (0.10 & 0.12) (#493)
    • 783e059 [chore] Release 2.1.0 (#492)
    • 81ef0bc [feat] Add an option to toggle handling of OPTIONS requests (#491)
    • 0946596 [chore] Bump engine.io-parser to version 2.0.1 (#490)
    • b723cae [chore] Bump uws to version 0.13.0 (#489)
    • bd1e81e [chore] Release 2.0.2 (#481)
    • 01e36b4 [chore] Bump ws to version 1.1.2 (vulnerability fix) (#480)
    • 0cbf363 [chore] Release 2.0.1 (#477)
    • cdb487d [fix] Initialize the WebSocket server in the `Server` constructor (#476)
    • 9b4e983 [chore] Release 2.0.0 (#472)
    • 274efa1 [feature] Add an `initialPacket` option (#471)
    • a3496ed [fix] Discard packets when socket is closed (#469)
    • 57ec952 [docs] Fix spelling mistake (#466)
    • bbffbd5 [chore] Bump engine.io-parser to version 2.0.0 (#463)
    • f72f6f3 [fix] `allowRequest` failures now return 403 Forbidden (#452)

    See the full diff

    Package name: socket.io-adapter The new version differs by 38 commits.
    • 6874ea4 [chore] release 1.1.1
    • bdb015a [chore] remove unused 'debug' dependency (#52)
    • c6f7bae [chore] Release 1.1.0 (#50)
    • f627cd2 [feat] Add addAll method (#49)
    • b983377 [chore] Release 1.0.0 (#48)
    • 40764bb [feat] Remove the socket.io-parser dependency (#47)
    • fd086d7 [refactor] Remove useless self var (#45)
    • 9a621ec [chore] Release 0.5.0 (#44)
    • ffadfa6 [feature] Add clientRooms method (#41)
    • 915af31 [chore] Bump debug to version 2.3.3 (#42)
    • 35987a5 [chore] Bump socket.io-parser to version 2.3.1 (#43)
    • 97bdbab [docs] Fix typo in Readme.md (#37)
    • efd6141 Release 0.4.0
    • d16e46d Merge pull request #30 from manubb/master-patched
    • 6e0ecb4 package: bump `debug`
    • bac5b0e Simplify and clarify.
    • 55274af Small fix.
    • 1a5b6d4 Comments on Room methods.
    • f7e7c07 Remove some spaces.
    • 89bd581 Merge pull request #1 from kapouer/patch-1
    • 930741f Add missing closing curly brace
    • 8e5bae4 Add a newline at end of file.
    • 5c79d6e Use a Room class to efficiently track room size.
    • de5cba4 Merge pull request #26 from nkzawa/patch-0

    See the full diff

    Check the changes in this PR to ensure they won't cause issues with your project.


    Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.

    For more information: 🧐 View latest project report

    🛠 Adjust project settings

    📚 Read more about Snyk's upgrade and patch logic


    Learn how to fix vulnerabilities with free interactive lessons:

    🦉 Learn about vulnerability in an interactive lesson of Snyk Learn.

    opened by TwistedHardware 1
Releases(v0.8.4)
  • v0.6.2(Apr 28, 2021)

    Added

    • Support for getting static files when runnung uadmin prepare from modules instead of source folder
    • uadmin prepare now accepts a new parameter --src that allows to overide the default behavior and get the static files from source instead of module
    • uadmin prepare takes go.mod into consideration to decide where to get the static files from. This allows developers to develop multiple applications that uses different version of uAdmin. If you use replace directive inside go.mod, the prepare tool will copy the files from the local folder as instructed in the replace directive.
    • Two new settings "Logo" and "FavIcon" to customize your application even further.

    Changed

    • Added .DS_Store and .vscode to .gitignore

    Deprecated

    Removed

    • uadmin pubnlish is removed. It used to be an internal development tool and was cool to have it runnig publicly for a while

    Fixed

    • dAPI didn't have docs for method and fixed some typos
    • Linting (So much linting)

    Security

    • The system reads two envirnment variables UADMIN_USER and UADMIN_PASS for new deployments to create admin username and password. If these environment variables do not exist, uAdmin will user "admin" and "admin" for username and password.
    Source code(tar.gz)
    Source code(zip)
  • v0.6.1(Apr 28, 2021)

    Added

    • Support for getting static files when runnung uadmin prepare from modules instead of source folder
    • uadmin prepare now accepts a new parameter --src that allows to overide the default behavior and get the static files from source instead of module
    • uadmin prepare takes go.mod into consideration to decide where to get the static files from. This allows developers to develop multiple applications that uses different version of uAdmin. If you use replace directive inside go.mod, the prepare tool will copy the files from the local folder as instructed in the replace directive.
    • Two new settings "Logo" and "FavIcon" to customize your application even further.

    Changed

    • Added .DS_Store and .vscode to .gitignore

    Deprecated

    Removed

    • uadmin pubnlish is removed. It used to be an internal development tool and was cool to have it runnig publicly for a while

    Fixed

    • dAPI didn't have docs for method and fixed some typos
    • Linting (So much linting)

    Security

    • The system reads two envirnment variables UADMIN_USER and UADMIN_PASS for new deployments to create admin username and password. If these environment variables do not exist, uAdmin will user "admin" and "admin" for username and password.
    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Apr 28, 2021)

    Added

    • Support for getting static files when runnung uadmin prepare from modules instead of source folder
    • uadmin prepare now accepts a new parameter --src that allows to overide the default behavior and get the static files from source instead of module
    • uadmin prepare takes go.mod into consideration to decide where to get the static files from. This allows developers to develop multiple applications that uses different version of uAdmin. If you use replace directive inside go.mod, the prepare tool will copy the files from the local folder as instructed in the replace directive.
    • Two new settings "Logo" and "FavIcon" to customize your application even further.

    Changed

    • Added .DS_Store and .vscode to .gitignore

    Deprecated

    Removed

    • uadmin pubnlish is removed. It used to be an internal development tool and was cool to have it runnig publicly for a while

    Fixed

    • dAPI didn't have docs for method and fixed some typos
    • Linting (So much linting)

    Security

    • The system reads two envirnment variables UADMIN_USER and UADMIN_PASS for new deployments to create admin username and password. If these environment variables do not exist, uAdmin will user "admin" and "admin" for username and password.
    Source code(tar.gz)
    Source code(zip)
  • v0.5.3(Apr 8, 2021)

    Changed

    • Drop support for GO version 1.11 and 1.12

    Deprecated

    Removed

    Fixed

    • Fixed adding more than 10 items in dAPI
    • Fixed saving of language not removing the previous default language

    Security

    Source code(tar.gz)
    Source code(zip)
  • v0.5.2(Aug 20, 2020)

  • v0.5.1(Aug 7, 2020)

    [0.5.1] Atlas Moth - 2020-08-07

    Added

    Changed

    • dAPI function method can return a value if the method called has a return. Note: if you have a return, you cannot use $next to redirect.

    Deprecated

    Removed

    Fixed

    • Fixed false possitive SQL Injection in dAPI join.
    • Fixed false detection in customGet for private fields of type []struct as an M2M field.
    • Typo in uadmin command line tool.

    Security

    • CSRF protection in dAPI in functions: add, edit, delete and method.
    • Tamplate function CSRF implemented in uadmin.RenderHTML and uadmin.RenderHTMLMulti. It returns anti CSRF token.
    • uadmin.IsAuthenticated recognizes nouser sessions. These sessions are for users who are not authenticated in the system. To set a session cookie, user SetSessionCookie
    • uadmin.SetSessionCookie receives a pointer to a session and sets the session cookie in a secure way. If you pass a nil to the session, the session will be created as a nouser session which is still a session but gives the user to access as an authenticated user. These sssions can be used to protect against CSRF attacks in case you have a public API.
    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Aug 2, 2020)

    We are happy to announce the release of version 0.5.0 under the code name "Atlas Moth"

    Change Log

    [0.5.0] Atlas Moth - 2020-08-02

    Added

    • PreQuery and PostQuery handler for dAPI
    • method command in dAPI to run model's methods
    • Windows support for syslog
    • $preload in dAPI
    • RenderHTMLMulti to render nested templates
    • $choices in schema command in dAPI to preload FK and M2M choices
    • Support for golang Modules
    • Added search in dAPI using $q
    • Reset button for ABTest
    • Added delete functionality for file and image from UI and dAPI
    • dAPI schema now translates the model based on your language cookie
    • dAPI now supports M2M in add and delete functions
    • $distinct in dAPI read function

    Changed

    • Droping support for Golang 1.10
    • Changed Excel export library to excelize
    • GetDefaultLanguage and GetActiveLanguages are public now
    • TranslateSchema is public now
    • Model method GetImageSize() (int, int) to customize image size

    Deprecated

    Removed

    Fixed

    • Fixed bug with dAPI __ filters
    • Fixed last insert ID in MySQL
    • Fixed dAPI clearing file and image fields
    • Fixed a bug with Aggregate column
    • HideInDashboard works for existing models
    • DashboardMenu changes icon size to 128X128 pixels

    Security

    • PasswordAttempts and PasswordTimeout settings to protect limit invalid password attempts
    • CheckRateLimit limits whole IP instead of IP and port combination
    • CSRF protection in UI and dAPI and public function CheckCSRF
    • SQL injection checking in dAPI, export and public function SQLInjection
    • Added AllowedHosts setting to limit the domains/IPs for password reset
    • Link fields get x-scrf-token added automatically in UI
    • session cookie uses SameSite=SameSiteStrictMode
    • Prevent navigation attacks in Theme setting and file upload
    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Mar 17, 2020)

    [0.4.0] - 2019-07-02

    Added

    • Implemented request rate limits to protect from DDoS
    • Implemented AB/Testing system
    • Implemented dAPI which is an API to access model data
    • Implemented CacheSessions and CachePermissions for direct in memory access to sessions and permissions
    • Implemented a Metrics system using the following function: SetMetric, IncrementMetric, TimeMetric and NewMetric
    • Trail can log to syslog
    • HTTP requests can be logged to syslog
    • Added uadmin.Handler(func(http.ResponseWriter, *http.Request)) func(http.ResponseWriter, *http.Request) to enable syslog for HTTP requests
    • Add OptimizeSQLQuery mode
    • Handle ctrl+F in Home and List view to focus on the search field instead of the native search
    • Added stringer meta tag
    • Added two API end points /api/get_models and /api/get_fields?m={MODEL_NAME}

    Changed

    • Changed Login(*http.Request, string, string) (*User, bool) to Login(*http.Request, string, string) (*Session, bool)
    • Changed Login2FA(*http.Request, string, string, string) *User to Login2FA(*http.Request, string, string, string) *Session
    • Changed HTMLContext to RenderHTML that has support for templates functions
    • URL filter place holders are capital letters {USERNAME}, {USERID} and {NOW}
    • Search is allowed for list_exclude fields.
    • Changed the search API path to /api/search/
    • Make static handler a public function uadmin.StaticHandler(http.ResponseWriter, *http.Request)
    • Added three new level to Trail for compatibility with syslog which are Critical, Alert and Emergency
    • If database doesn't exist for mysql, uAdmin will try to create a new database.

    Deprecated

    • User.HasPermission will be private starting 0.6.0
    • UserGroup.HasPermission will be private starting 0.6.0

    Removed

    Fixed

    • Fixed image crop modal conflict in list view with delete modal and add it to form and inlines
    • Fixed FK in approvals
    • Remove required from fields with pending approval
    • Support filtering/searching by NULL value for time.Time pointer
    • Fixed filtering by FK

    Security

    • Restrict access to inlines based on user model permissions
    • Search API escapes HTML results
    Source code(tar.gz)
    Source code(zip)
  • 0.2.0(Jun 19, 2019)

    [0.2.0] - 2019-06-20

    Added

    - Global Variable:
    	- Settings model which can be used system wide to keep application settings.
    	- GetSetting function to read settings from the settings model.
    	- User.GetAccess function can evaluate the user's permission to a model using user level and group level and return a UserPermission instance.
    	- ErrorHandleFunc: A function that can be passed for handling errors system wide that gets called when Trail is called.
    	- AllowedIPs: is a list of allowed IPs to access uAdmin interfrace
    	- BlockedIPs: is a list of blocked IPs from accessing uAdmin interfrace
    	- RestrictSessionIP: restricts access to the system if the IP of the user changes after login
    	- RetainMediaVersions: is to allow the system to keep files uploaded even after they are changed
    

    Changed

    - Forgot password now sends HTML emails.
    - GetString function can return the name of a static list item.
    

    Deprecated

    Removed

    Fixed

    • Bug fix for read only fields for new and edit.
      • Model names in dashboard are generated using proper plural function instead of just adding "s"

    Security

    Source code(tar.gz)
    Source code(zip)
  • 0.1.0(Apr 27, 2019)

    Bug Fixes More Documentation & Sample Projects Added Quizzes to Docs Translation Files Preloading Added global variable: CacheTranslation

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0-rc.1(Dec 23, 2018)

Owner
uADMIN
uADMIN is the fully loaded web framework for Golang. www.integritynet.biz
uADMIN
The jin is a simplified version of the gin web framework that can help you quickly understand the core principles of a web framework.

jin About The jin is a simplified version of the gin web framework that can help you quickly understand the core principles of a web framework. If thi

null 8 Dec 27, 2021
⚡ Rux is an simple and fast web framework. support middleware, compatible http.Handler interface. 简单且快速的 Go web 框架,支持中间件,兼容 http.Handler 接口

Rux Simple and fast web framework for build golang HTTP applications. NOTICE: v1.3.x is not fully compatible with v1.2.x version Fast route match, sup

Gookit 77 Apr 16, 2022
henrylee2cn 1.6k Jun 26, 2022
Roche is a Code Generator and Web Framework, makes web development super concise with Go, CleanArch

It is still under development, so please do not use it. We plan to release v.1.0.0 in the summer. roche is a web framework optimized for microservice

Riita 15 May 21, 2022
A powerful go web framework for highly scalable and resource efficient web application

webfr A powerful go web framework for highly scalable and resource efficient web application Installation: go get -u github.com/krishpranav/webfr Exa

Krisna Pranav 13 Nov 28, 2021
A powerful go web framework for highly scalable and resource efficient web application

A powerful go web framework for highly scalable and resource efficient web application

null 21 May 25, 2022
A web app built using Go Buffalo web framework

Welcome to Buffalo Thank you for choosing Buffalo for your web development needs. Database Setup It looks like you chose to set up your application us

Mike Okoth 0 Feb 7, 2022
laravel for golang,goal,fullstack framework,api framework

laravel for golang,goal,fullstack framework,api framework

桥边红药 17 Feb 24, 2022
Gin is a HTTP web framework written in Go (Golang).

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-Gonic 60.5k Jun 25, 2022
BANjO is a simple web framework written in Go (golang)

BANjO banjo it's a simple web framework for building simple web applications Install $ go get github.com/nsheremet/banjo Example Usage Simple Web App

Nazarii Sheremet 19 Jan 24, 2022
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:

uADMIN 193 May 30, 2022
Eudore is the core of a golang lightweight web framework.

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

null 72 Jun 15, 2022
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

QLeelulu 275 May 24, 2022
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

null 368 Jun 11, 2022
Tigo is an HTTP web framework written in Go (Golang).It features a Tornado-like API with better performance. Tigo是一款用Go语言开发的web应用框架,API特性类似于Tornado并且拥有比Tornado更好的性能。

Tigo(For English Documentation Click Here) 一个使用Go语言开发的web框架。 相关工具及插件 tiger tiger是一个专门为Tigo框架量身定做的脚手架工具,可以使用tiger新建Tigo项目或者执行其他操作。

Karl 1.3k Jun 20, 2022
🍐 Elegant Golang Web Framework

Goyave Template A template project to get started with the Goyave framework. Getting Started Requirements Go 1.13+ Go modules Running the project Firs

Goyave 14 Apr 10, 2022
A gin-like simple golang web framework.

webgo A gin-like simple golang web framework.

vincent 22 Dec 22, 2021
A gin-like simple golang web framework.

A gin-like simple golang web framework.

vincent-言益 22 Dec 22, 2021
Umeshu is a mini web framework written by Golang.

Umeshu Umeshu is a mini web framework written by Golang. Purpose Why do I reinvent the wheel? Just for learning. ?? Building a mini web framework from

KN.C 0 Oct 8, 2021