Compare commits
	
		
			6 Commits
		
	
	
		
			dd136d19c9
			...
			ba0eb8649b
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| ba0eb8649b | |||
| e1b64766b6 | |||
| d56d0ba19a | |||
| 8abaa311af | |||
| 6ebf79e0e0 | |||
| a7da12d028 | 
							
								
								
									
										19
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,8 +1,15 @@ | |||||||
| # ---> Composer | # Compiled binary | ||||||
| composer.phar | raven | ||||||
| /vendor/ |  | ||||||
|  |  | ||||||
| # Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control | # Vendored dependencies | ||||||
| # You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file | vendor/ | ||||||
| # composer.lock |  | ||||||
|  |  | ||||||
|  | # Local database storage | ||||||
|  | data/raven.db | ||||||
|  |  | ||||||
|  | # Node.js modules for Grunt.js | ||||||
|  | node_modules/ | ||||||
|  |  | ||||||
|  | # Compiled CSS and JS assets | ||||||
|  | public/css/ | ||||||
|  | public/js/ | ||||||
|   | |||||||
							
								
								
									
										41
									
								
								Gruntfile.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								Gruntfile.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | |||||||
|  | module.exports = function(grunt) { | ||||||
|  |  | ||||||
|  |   // Project configuration. | ||||||
|  |   grunt.initConfig({ | ||||||
|  |     pkg: grunt.file.readJSON('package.json'), | ||||||
|  |  | ||||||
|  |     sass: { | ||||||
|  |       dist: { | ||||||
|  |         options: { | ||||||
|  |           style: 'compressed' | ||||||
|  |         }, | ||||||
|  |         files: [{ | ||||||
|  |           expand: true, | ||||||
|  |           cwd: 'assets/styles', | ||||||
|  |           src: ['**/*.scss'], | ||||||
|  |           dest: 'public/css', | ||||||
|  |           ext: '.css' | ||||||
|  |         }] | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |  | ||||||
|  |     watch: { | ||||||
|  |       css: { | ||||||
|  |         files: ['assets/styles/**/*.scss'], | ||||||
|  |         tasks: ['sass'], | ||||||
|  |         options: { | ||||||
|  |           atBegin: true, | ||||||
|  |           spawn: false | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   }); | ||||||
|  |  | ||||||
|  |   // Load plugins. | ||||||
|  |   grunt.loadNpmTasks('grunt-contrib-watch'); | ||||||
|  |   grunt.loadNpmTasks('grunt-contrib-sass'); | ||||||
|  |  | ||||||
|  |   // CLI tasks. | ||||||
|  |   grunt.registerTask('default', ['sass']); | ||||||
|  |  | ||||||
|  | }; | ||||||
							
								
								
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | |||||||
| Copyright (c) <year> <owner>  | Copyright (c) 2022 Metaunix.net | ||||||
|  |  | ||||||
| Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										20
									
								
								app/db/init.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								app/db/init.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | package db | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"gorm.io/driver/sqlite" | ||||||
|  | 	"gorm.io/gorm" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | var ( | ||||||
|  | 	DB gorm.DB | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | func InitDatabase() { | ||||||
|  | 	DB, err := gorm.Open(sqlite.Open("data/raven.db"), &gorm.Config{}) | ||||||
|  | 	if err != nil { | ||||||
|  | 		panic("failed to connect database") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// Migrate the schema | ||||||
|  | 	DB.AutoMigrate(&Item{}) | ||||||
|  | } | ||||||
							
								
								
									
										18
									
								
								app/db/item.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								app/db/item.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | package db | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"time" | ||||||
|  |  | ||||||
|  | 	"gorm.io/gorm" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | type Item struct { | ||||||
|  | 	gorm.Model | ||||||
|  | 	Name          string | ||||||
|  | 	Manufacturer  string | ||||||
|  | 	Type          string | ||||||
|  | 	SerialNumber  string | ||||||
|  | 	SkuNumber     string | ||||||
|  | 	PurchasedFrom string | ||||||
|  | 	PurchasedAt   time.Time | ||||||
|  | } | ||||||
							
								
								
									
										26
									
								
								app/web/routes.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								app/web/routes.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | |||||||
|  | package web | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"net/http" | ||||||
|  |  | ||||||
|  | 	"github.com/flamego/flamego" | ||||||
|  | 	"github.com/flamego/template" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | func RegisterRoutes(f *flamego.Flame) { | ||||||
|  | 	// index route - landing page for the user | ||||||
|  | 	f.Get("/", func(t template.Template, data template.Data) { | ||||||
|  | 		t.HTML(http.StatusOK, "index") | ||||||
|  | 	}) | ||||||
|  |  | ||||||
|  | 	// item list route - lists all of the items in the database | ||||||
|  | 	f.Group("/item", func() { | ||||||
|  | 		f.Get("/list", func(t template.Template, data template.Data) { | ||||||
|  | 			t.HTML(http.StatusOK, "item/list") | ||||||
|  | 		}) | ||||||
|  |  | ||||||
|  | 		f.Get("/create", func(t template.Template, data template.Data) { | ||||||
|  | 			t.HTML(http.StatusOK, "item/create") | ||||||
|  | 		}) | ||||||
|  | 	}) | ||||||
|  | } | ||||||
							
								
								
									
										62
									
								
								assets/styles/kraken.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								assets/styles/kraken.scss
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | |||||||
|  | $nav-width: 200px; | ||||||
|  |  | ||||||
|  | $box-shadow-1: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); | ||||||
|  | $box-shadow-2: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23); | ||||||
|  |  | ||||||
|  | body{ | ||||||
|  |   background: lightgrey; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #main-nav{ | ||||||
|  |   position: fixed; | ||||||
|  |   top: 0; | ||||||
|  |   left: 0; | ||||||
|  |   width: $nav-width; | ||||||
|  |   height: 100%; | ||||||
|  |   padding: 20px 0; | ||||||
|  |   background: #212121; | ||||||
|  |   color: white; | ||||||
|  |   box-shadow: $box-shadow-1; | ||||||
|  |   box-sizing: border-box; | ||||||
|  |  | ||||||
|  |   h3{ | ||||||
|  |     text-align: center; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   ul{ | ||||||
|  |     list-style: none; | ||||||
|  |  | ||||||
|  |     li{ | ||||||
|  |       margin: 0; | ||||||
|  |       border-bottom: 1px solid #999; | ||||||
|  |  | ||||||
|  |       &:first-child{ | ||||||
|  |         border-top: 1px solid #999; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     a{ | ||||||
|  |       display: block; | ||||||
|  |       box-sizing: border-box; | ||||||
|  |       width: $nav-width; | ||||||
|  |       padding: 10px 15px; | ||||||
|  |       color: limegreen; | ||||||
|  |       font-size: 2.5rem; | ||||||
|  |       text-decoration: none; | ||||||
|  |       transition: all 230ms ease-in-out; | ||||||
|  |  | ||||||
|  |       &:hover{ | ||||||
|  |         background: rgba(255, 255, 255, 0.1); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #main-wrapper{ | ||||||
|  |   max-width: 1200px; | ||||||
|  |   margin-top: 25px; | ||||||
|  |   padding: 20px 30px; | ||||||
|  |   background: white; | ||||||
|  |   border-radius: 5px; | ||||||
|  |   box-shadow: $box-shadow-2; | ||||||
|  | } | ||||||
							
								
								
									
										19
									
								
								go.mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								go.mod
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | module git.metaunix.net/metaunix/raven | ||||||
|  |  | ||||||
|  | go 1.18 | ||||||
|  |  | ||||||
|  | require ( | ||||||
|  | 	github.com/alecthomas/participle/v2 v2.0.0-beta.5 // indirect | ||||||
|  | 	github.com/fatih/color v1.13.0 // indirect | ||||||
|  | 	github.com/flamego/flamego v1.7.0 // indirect | ||||||
|  | 	github.com/flamego/template v1.1.0 // indirect | ||||||
|  | 	github.com/jinzhu/inflection v1.0.0 // indirect | ||||||
|  | 	github.com/jinzhu/now v1.1.5 // indirect | ||||||
|  | 	github.com/mattn/go-colorable v0.1.9 // indirect | ||||||
|  | 	github.com/mattn/go-isatty v0.0.14 // indirect | ||||||
|  | 	github.com/mattn/go-sqlite3 v1.14.16 // indirect | ||||||
|  | 	github.com/pkg/errors v0.9.1 // indirect | ||||||
|  | 	golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c // indirect | ||||||
|  | 	gorm.io/driver/sqlite v1.4.3 // indirect | ||||||
|  | 	gorm.io/gorm v1.24.2 // indirect | ||||||
|  | ) | ||||||
							
								
								
									
										32
									
								
								go.sum
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								go.sum
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | |||||||
|  | github.com/alecthomas/participle/v2 v2.0.0-beta.5 h1:y6dsSYVb1G5eK6mgmy+BgI3Mw35a3WghArZ/Hbebrjo= | ||||||
|  | github.com/alecthomas/participle/v2 v2.0.0-beta.5/go.mod h1:RC764t6n4L8D8ITAJv0qdokritYSNR3wV5cVwmIEaMM= | ||||||
|  | github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= | ||||||
|  | github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= | ||||||
|  | github.com/flamego/flamego v1.7.0 h1:c1Lu16PBAZKkpsjHw42vwotdoQnMMpUi60ITP41W12w= | ||||||
|  | github.com/flamego/flamego v1.7.0/go.mod h1:dnVMBJyHKaxjcqRVN93taSK+YB/9p+Op1GdLIuA1hFQ= | ||||||
|  | github.com/flamego/template v1.1.0 h1:iYtCzY3TeYpsoQiGApFXw2qycKdMzimz2gkO/SlcksM= | ||||||
|  | github.com/flamego/template v1.1.0/go.mod h1:bgnmEXNumarhQIUzFgn18CDG6u8cM6X09c7UOTwZcxM= | ||||||
|  | github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= | ||||||
|  | github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= | ||||||
|  | github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= | ||||||
|  | github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= | ||||||
|  | github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= | ||||||
|  | github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U= | ||||||
|  | github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= | ||||||
|  | github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= | ||||||
|  | github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= | ||||||
|  | github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= | ||||||
|  | github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= | ||||||
|  | github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= | ||||||
|  | github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= | ||||||
|  | github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | ||||||
|  | github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||||
|  | golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
|  | golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
|  | golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I= | ||||||
|  | golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
|  | gorm.io/driver/sqlite v1.4.3 h1:HBBcZSDnWi5BW3B3rwvVTc510KGkBkexlOg0QrmLUuU= | ||||||
|  | gorm.io/driver/sqlite v1.4.3/go.mod h1:0Aq3iPO+v9ZKbcdiz8gLWRw5VOPcBOPUQJFLq5e2ecI= | ||||||
|  | gorm.io/gorm v1.24.0/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA= | ||||||
|  | gorm.io/gorm v1.24.2 h1:9wR6CFD+G8nOusLdvkZelOEhpJVwwHzpQOUM+REd6U0= | ||||||
|  | gorm.io/gorm v1.24.2/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA= | ||||||
							
								
								
									
										3064
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										3064
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										33
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | |||||||
|  | { | ||||||
|  |   "name": "raven", | ||||||
|  |   "version": "0.1.0", | ||||||
|  |   "description": "Self-hosted inventory tracker", | ||||||
|  |   "main": "index.js", | ||||||
|  |   "scripts": { | ||||||
|  |     "grunt": "grunt", | ||||||
|  |     "test": "echo \"Error: no test specified\" && exit 1" | ||||||
|  |   }, | ||||||
|  |   "repository": { | ||||||
|  |     "type": "git", | ||||||
|  |     "url": "gitea@git.metaunix.net:Metaunix/raven.git" | ||||||
|  |   }, | ||||||
|  |   "keywords": [ | ||||||
|  |     "inventory", | ||||||
|  |     "tracking" | ||||||
|  |   ], | ||||||
|  |   "author": "Gregory Ballanine <gballantine@metaunix.net>", | ||||||
|  |   "uploaders": [ | ||||||
|  |     { | ||||||
|  |       "name": "Gregory Ballantine", | ||||||
|  |       "email": "gballantine@metaunix.net" | ||||||
|  |     } | ||||||
|  |   ], | ||||||
|  |   "license": "BSD-2-Clause", | ||||||
|  |   "devDependencies": { | ||||||
|  |     "grunt": "^1.5.3", | ||||||
|  |     "grunt-cli": "^1.4.3", | ||||||
|  |     "grunt-contrib-sass": "^2.0.0", | ||||||
|  |     "grunt-contrib-watch": "^1.1.0", | ||||||
|  |     "sass": "^1.55.0" | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										31
									
								
								raven.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								raven.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | |||||||
|  | package main | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"github.com/flamego/flamego" | ||||||
|  | 	"github.com/flamego/template" | ||||||
|  |  | ||||||
|  | 	"git.metaunix.net/metaunix/raven/app/db" | ||||||
|  | 	"git.metaunix.net/metaunix/raven/app/web" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | func main() { | ||||||
|  | 	f := flamego.New() | ||||||
|  |  | ||||||
|  | 	// Initialize the database connection | ||||||
|  | 	db.InitDatabase() | ||||||
|  |  | ||||||
|  | 	// Initialize template engine | ||||||
|  | 	f.Use(template.Templater(template.Options{ | ||||||
|  | 		Directory: "views", | ||||||
|  | 	})) | ||||||
|  |  | ||||||
|  | 	f.Use(flamego.Static( | ||||||
|  | 		flamego.StaticOptions{ | ||||||
|  | 			Directory: "public", | ||||||
|  | 		}, | ||||||
|  | 	)) | ||||||
|  |  | ||||||
|  | 	web.RegisterRoutes(f) | ||||||
|  |  | ||||||
|  | 	f.Run() | ||||||
|  | } | ||||||
							
								
								
									
										9
									
								
								views/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								views/index.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | {{ template "layout_header" . }} | ||||||
|  |  | ||||||
|  | <div class="row"> | ||||||
|  |   <div class="twelve columns"> | ||||||
|  |     <p>This is a test.</p> | ||||||
|  |   </div> | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | {{ template "layout_footer" . }} | ||||||
							
								
								
									
										68
									
								
								views/item/create.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								views/item/create.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | |||||||
|  | {{ template "layout_header" . }} | ||||||
|  |  | ||||||
|  | <div class="row"> | ||||||
|  |   <div class="twelve columns"> | ||||||
|  |     <h1>Create new item</h1> | ||||||
|  |   </div> | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | <div class="row"> | ||||||
|  |   <div class="twelve columns"> | ||||||
|  |     <form action="/item/create" method="POST" class="u-full-width"> | ||||||
|  |       <div class="row"> | ||||||
|  |         <div class="columns twelve"> | ||||||
|  |           <label for="item_name">Item name:</label> | ||||||
|  |           <input class="u-full-width" type="text" placeholder="My new item" id="item_name" name="item_name" required> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |  | ||||||
|  |       <div class="row"> | ||||||
|  |         <div class="six columns"> | ||||||
|  |           <label for="item_serial">Serial number:</label> | ||||||
|  |           <input class="u-full-width" type="text" placeholder="0123456789" id="item_serial" name="item_serial"> | ||||||
|  |         </div> | ||||||
|  |  | ||||||
|  |         <div class="six columns"> | ||||||
|  |           <label for="item_sku">SKU number:</label> | ||||||
|  |           <input class="u-full-width" type="text" placeholder="ABC12345678" id="item_sku" name="item_sku"> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |  | ||||||
|  |       <div class="row"> | ||||||
|  |         <div class="six columns"> | ||||||
|  |           <label for="item_purchase_from">Purchased from:</label> | ||||||
|  |           <input class="u-full-width" type="text" placeholder="Newegg" id="item_purchase_from" name="item_purchase_from"> | ||||||
|  |         </div> | ||||||
|  |  | ||||||
|  |         <div class="six columns"> | ||||||
|  |           <label for="item_purchase_date">Purchased at:</label> | ||||||
|  |           <input class="u-full-width" type="datetime-local" id="item_purchase_date" name="item_purchase_date"> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |  | ||||||
|  |       <div class="row"> | ||||||
|  |         <div class="six columns"> | ||||||
|  |           <label for="item_manufacturer">Manufacturer:</label> | ||||||
|  |           <input class="u-full-width" type="text" placeholder="Manufacturer" id="item_manufacturer" name="item_manufacturer"> | ||||||
|  |         </div> | ||||||
|  |  | ||||||
|  |         <div class="six columns"> | ||||||
|  |           <label for="item_type">Item type</label> | ||||||
|  |           <select class="u-full-width" id="item_type" name="item_type"> | ||||||
|  |             <option value="cpu">Processor</option> | ||||||
|  |             <option value="motherboard">Motherboard</option> | ||||||
|  |             <option value="memory">Memory (RAM)</option> | ||||||
|  |             <option value="psu">Power Supply</option> | ||||||
|  |             <option value="case">Case</option> | ||||||
|  |             <option value="storage">Storage Device</option> | ||||||
|  |             <option value="gpu">Graphics Card</option> | ||||||
|  |           </select> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |  | ||||||
|  |       <input class="button-primary u-full-width" type="submit" value="Submit"> | ||||||
|  |     </form> | ||||||
|  |   </div> | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | {{ template "layout_footer" . }} | ||||||
							
								
								
									
										11
									
								
								views/item/list.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								views/item/list.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  | {{ template "layout_header" . }} | ||||||
|  |  | ||||||
|  | <p><a href="/item/create">Create new item</a></p> | ||||||
|  |  | ||||||
|  | <ul> | ||||||
|  |   {{ range .inventory }} | ||||||
|  |     <li>{{ .name }}</li> | ||||||
|  |   {{ end }} | ||||||
|  | </ul> | ||||||
|  |  | ||||||
|  | {{ template "layout_footer" . }} | ||||||
							
								
								
									
										5
									
								
								views/layout/footer.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								views/layout/footer.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | {{ define "layout_footer" }} | ||||||
|  |   </div> | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
|  | {{ end }} | ||||||
							
								
								
									
										17
									
								
								views/layout/header.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								views/layout/header.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | |||||||
|  | {{ define "layout_header" }} | ||||||
|  | <!DOCTYPE html> | ||||||
|  | <html lang="en"> | ||||||
|  | <head> | ||||||
|  |   <meta charset="UTF-8"> | ||||||
|  |   <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||||||
|  |   <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||||
|  |   <title>{{ .title }} | Raven</title> | ||||||
|  |   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css"> | ||||||
|  |   <link rel="stylesheet" href="/css/kraken.css"> | ||||||
|  |   <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script> | ||||||
|  | </head> | ||||||
|  | <body> | ||||||
|  |   {{ template "navbar" . }} | ||||||
|  |  | ||||||
|  |   <div id="main-wrapper" class="container"> | ||||||
|  | {{ end }} | ||||||
							
								
								
									
										13
									
								
								views/layout/navbar.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								views/layout/navbar.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | {{ define "navbar" }} | ||||||
|  |  | ||||||
|  |   <nav id="main-nav"> | ||||||
|  |     <h3>Raven</h3> | ||||||
|  |  | ||||||
|  |     <ul> | ||||||
|  |       <li><a href="/">Dashboard</a></li> | ||||||
|  |       <li><a href="/item/list">Items</a></li> | ||||||
|  |       <li><a href="/license/list">Licenses</a></li> | ||||||
|  |     </ul> | ||||||
|  |   </nav> | ||||||
|  |  | ||||||
|  | {{ end }} | ||||||
		Reference in New Issue
	
	Block a user