WASAPhoto

module
v0.0.0-...-13cec93 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 10, 2023 License: MIT

README

Contributors Forks Stargazers Issues MIT License LinkedIn


WASAPhoto

Table of Contents
  1. About The Project
  2. Demo
  3. Project Structure
  4. Known Issues
  5. Roadmap
  6. License
  7. Contact

About The Project

Keep in touch with your friends by sharing photos of special moments, thanks to WASAPhoto! Directly from your PC, you can upload your photos, and they will be visible to everyone who is following you.

(back to top)

Built With

  • Swagger
  • Go
  • SQLite
  • HTML5
  • CSS3
  • JavaScript
  • Vue.js
  • Docker

(back to top)

Demo

Here you can see a demo of the website:

(back to top)

Project structure

  • cmd/ contains all executables; Go programs here should only do "executable-stuff", like reading options from the CLI/env, etc.
    • cmd/healthcheck is an example of a daemon for checking the health of servers daemons; useful when the hypervisor is not providing HTTP readiness/liveness probes (e.g., Docker engine)
    • cmd/webapi contains an example of a web API server daemon
  • demo/ contains a demo config file
  • doc/ contains the documentation (an OpenAPI file)
  • service/ has all packages for implementing project-specific functionalities
    • service/api contains an example of an API server
    • service/globaltime contains a wrapper package for time.Time (useful in unit testing)
  • vendor/ is managed by Go, and contains a copy of all dependencies
  • webui/ is an example of a web frontend in Vue.js; it includes:
    • Bootstrap JavaScript framework
    • a customized version of "Bootstrap dashboard" template
    • feather icons as SVG
    • Go code for release embedding

Other project files include:

  • open-npm.sh starts a new (temporary) container using node:lts image for safe web frontend development

(back to top)

Go vendoring

This project uses Go Vendoring. You must use go mod vendor after changing some dependency (go get or go mod tidy) and add all files under vendor/ directory in your commit.

For more information about vendoring:

(back to top)

Node/NPM vendoring

This repository contains the webui/node_modules directory with all dependencies for Vue.JS. You should commit the content of that directory and both package.json and package-lock.json.

(back to top)

How to set up a new project from this template

You need to:

  • Change the Go module path to your module path in go.mod, go.sum, and in *.go files around the project
  • Rewrite the API documentation doc/api.yaml
  • If no web frontend is expected, remove webui and cmd/webapi/register-webui.go
  • If no cronjobs or health checks are needed, remove them from cmd/
  • Update top/package comment inside cmd/webapi/main.go to reflect the actual project usage, goal, and general info
  • Update the code in run() function (cmd/webapi/main.go) to connect to databases or external resources
  • Write API code inside service/api, and create any further package inside service/ (or subdirectories)

(back to top)

How to build

If you're not using the WebUI, or if you don't want to embed the WebUI into the final executable, then:

go build ./cmd/webapi/

If you're using the WebUI and you want to embed it into the final executable:

./open-npm.sh
# (here you're inside the NPM container)
npm run build-embed
exit
# (outside the NPM container)
go build -tags webui ./cmd/webapi/

(back to top)

How to run (in development mode)

You can launch the backend only using:

go run ./cmd/webapi/

If you want to launch the WebUI, open a new tab and launch:

./open-npm.sh
# (here you're inside the NPM container)
npm run dev

(back to top)

Known issues

Apple M1 / ARM: failed to load config from...

If you use Apple M1/M2 hardware, or other ARM CPUs, you may encounter an error message saying that esbuild (or some other tool) has been built for another platform.

If so, you can fix issuing these commands only the first time:

./open-npm.sh
# (here you're inside the NPM container)
npm install
exit
# Now you can continue as indicated in "How to build/run"

Use these instructions only if you get an error. Do not use it if your build is OK.

My build works when I use npm run dev, however there is a Javascript crash in production/grading

Some errors in the code are somehow not shown in vite development mode. To preview the code that will be used in production/grading settings, use the following commands:

./open-npm.sh
# (here you're inside the NPM container)
npm run build-prod
npm run preview

(back to top)

Roadmap

  • Add Badges
  • Add back to top links
  • Add Video
  • Add License
  • Add Contact
  • Add Usage
  • Add Getting Started
  • Add Changelog

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Alessandro Vecchi - alessandro.vecchi66@gmail.com

Project Link: https://github.com/Alessandro-vecchi/WASAPhoto

(back to top)

Directories

Path Synopsis
cmd
healthcheck command
Healthcheck is a simple program that sends an HTTP request to the local host (self) to a configured port number.
Healthcheck is a simple program that sends an HTTP request to the local host (self) to a configured port number.
webapi command
Webapi is the executable for the main web server.
Webapi is the executable for the main web server.
service
api
Package api exposes the main API engine.
Package api exposes the main API engine.
api/reqcontext
Package reqcontext contains the request context.
Package reqcontext contains the request context.
database
Package database is the middleware between the app database and the code.
Package database is the middleware between the app database and the code.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL