{"id":20554918,"url":"https://github.com/jinyaoma/my-app","last_synced_at":"2025-06-12T06:32:34.067Z","repository":{"id":59652902,"uuid":"535418147","full_name":"jinyaoMa/my-app","owner":"jinyaoMa","description":"A continuously updated personal service collection; Tech. Stack: Go, TypeScript, Wails v2, Systray, Gin, GORM, Vue 3, etc.","archived":false,"fork":false,"pushed_at":"2023-12-16T03:56:52.000Z","size":3802,"stargazers_count":110,"open_issues_count":0,"forks_count":23,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-14T12:56:10.325Z","etag":null,"topics":["gin","go","gorm","systray","typescript","vue3","wails2"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jinyaoMa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-11T20:29:41.000Z","updated_at":"2025-04-09T17:59:41.000Z","dependencies_parsed_at":"2023-09-22T09:43:28.077Z","dependency_job_id":"f9de51e5-281c-4395-8dad-6dc040a4c8a0","html_url":"https://github.com/jinyaoMa/my-app","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/jinyaoMa/my-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jinyaoMa%2Fmy-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jinyaoMa%2Fmy-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jinyaoMa%2Fmy-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jinyaoMa%2Fmy-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jinyaoMa","download_url":"https://codeload.github.com/jinyaoMa/my-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jinyaoMa%2Fmy-app/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259412327,"owners_count":22853404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gin","go","gorm","systray","typescript","vue3","wails2"],"created_at":"2024-11-16T03:14:29.547Z","updated_at":"2025-06-12T06:32:34.031Z","avatar_url":"https://github.com/jinyaoMa.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# My Application (my-app)\n\n\u003e [English](./README.md) | [简体中文](./README.zh.md)\n\nMy Application is a continuously updated personal service collection.\n\n## Starter Code Preview\n\n\u003e You can find all preview screenshots [here](./screenshots/).\n\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"49%\" src=\"./screenshots/home.jpg\" alt=\"Home\"\u003e\n\u003cimg width=\"49%\" src=\"./screenshots/settings.jpg\" alt=\"Settings\"\u003e\n\u003c/p\u003e\n\n## Technologies\n\n| Technology  | Role                                                  | Sources                                 |\n| :---------- | :---------------------------------------------------- | :-------------------------------------- |\n| Go          | Backend programming language                          | https://pkg.go.dev/std                  |\n| TypeScript  | Frontend programming language                         | https://typescriptlang.org/             |\n| Sass/Scss   | Frontend CSS extension language                       | https://sass-lang.com/dart-sass         |\n| Vite        | Next Generation Frontend Tooling                      | https://vitejs.dev/                     |\n| Vue 3       | Progressive JavaScript Framework                      | https://vuejs.org/                      |\n| Wails v2    | Build cross-platform desktop applications using Go    | https://wails.io/                       |\n| UPX         | Ultimate packer for executables                       | https://upx.github.io/                  |\n| Systray     | A cross platfrom system tray using Go                 | https://github.com/getlantern/systray   |\n| Gin         | A HTTP web framework using Go                         | https://gin-gonic.com/                  |\n| Gin Swagger | Gin middleware for API documentation with Swagger 2.0 | https://github.com/swaggo/gin-swagger   |\n| Swaggo      | Converts Go annotations to Swagger Documentation 2.0  | https://github.com/swaggo/swag          |\n| Air         | Live reload and test for API service                  | https://github.com/cosmtrek/air         |\n| GORM        | ORM library for Go                                    | https://gorm.io/                        |\n| SQLite      | GORM sqlite driver                                    | https://github.com/go-gorm/sqlite       |\n| SVG To Font | Generator of fonts from SVG icons                     | https://github.com/jaywcjlove/svgtofont |\n\n## Setup\n\nPrepare and install environment for development in Window 10/11?\n\n- Git v2.37+, https://git-scm.com/\n- Go v1.19+, https://go.dev/\n- Node.js v16+, https://nodejs.org/\n- PNPM v7+, https://pnpm.io/\n- VS Code v1.71+ with GCC, https://code.visualstudio.com/docs/cpp/config-mingw\n- WebView2 v104+, https://developer.microsoft.com/en-us/microsoft-edge/webview2/\n\n\u003e Setup VS Code by installing recommended extensions. To do this, enter in `@recommended` while searching for extensions.\n\n\u003e Run command `go env -w CGO_ENABLED=1` to prepare for _CGO_ enabled packages\n\n\u003e Run command `pnpm install` at project root directory to setup.\n\n\u003e Want to update dependencies? Run command `pnpm update:dependencies` at project root directory to setup. Also may need to manually edit `peerDependencies` in all `package.json` files inside `frontend/packages` folder and its sub folders.\n\n## NPM Scripts\n\n```shell\n$ pnpm wails:dev # run wails in development mode\n$ pnpm wails:build # build wails application\n$ pnpm upx:compress # compress the generated executable by `wails:build` script\n$ pnpm air:dev # test API service individually\n$ pnpm swag:docs # generate/update swagger docs\n$ pnpm docs:dev # test vitepress docs individually\n$ pnpm docs:build # generate/update vitepress docs\n$ pnpm icons:build # build frontend/packages/icons\n$ pnpm design:build # build frontend/packages/design\n$ pnpm \u003c[install|preinstall]:[task]\u003e # install/preinstall scripts trigger during project setup\n```\n\n## Directory Structure\n\n```yaml\n.\n├── .tools # auto-generated, development tools/CLIs\n├── .vscode # extensions for VS Code\n├── air # sources related to air hot reload tool\n│   ├── bin # auto-generated, try script `air:dev`\n│   ├── .air.toml # air config\n│   └── main.go # run web service individually w/o wails and tray\n├── backend # sources related to backend code\n│   ├── app # app module, business layer\n│   │   ├── config # load application options from database, global resource\n│   │   │   ├── config.go # application config with functions for state and database manupulation\n│   │   │   ├── config.web.go # web config\n│   │   │   └── env.go # load os environment variable\n│   │   ├── i18n # manage locale/translation strings for backend, global resource\n│   │   ├── logger # setup loggers\n│   │   └── app.go # setup global state and resources\n│   ├── model # model module, persistence layer\n│   │   ├── model.go # setup database, table prefix `my_`\n│   │   └── my_option.go # define application options for app config storage\n│   ├── pkg # pkg module, cross cutting\n│   │   └── utils # helper functions\n│   ├── service # service module, business layer\n│   │   ├── service.go # initialize provided services\n│   │   └── settings.go # functions about configure application\n│   ├── tray # tray module, presentation layer\n│   │   ├── icons # tray icons\n│   │   ├── menus # tray menu types\n│   │   ├── expose.go # functions exposed to wails frontend\n│   │   ├── listen.go # listen to tray menu-item click events\n│   │   ├── ready.go # onReady() for system tray to initialize tray menu\n│   │   ├── refresh.go # refresh functions for language switch and tray icon tooltip\n│   │   └── tray.go # setup system tray\n│   └── web # web module, service layer\n│       ├── api # API services\n│       ├── auth # Auth services\n│       ├── middleware # custom gin middlewares\n│       ├── static # static websites and sources\n│       │   ├── certs # auto-generated for localhost TLS, try script `install:certs`\n│       │   ├── swagger # auto-generated, try script `swag:docs`\n│       │   ├── static.go # manage static sources\n│       │   └── # ...\n│       ├── air.go # special function for air to test API service individually\n│       ├── router.go # entry point of swaggo docs generator, manage routes for API\n│       └── web.go # web service\n├── build # sources to use during wails build process\n│   ├── bin # auto-generated, try script `wails:dev` or `wails:build`\n│   │   ├── Assets # wails frontend static resources, auto-generated, try script `wails:build`\n│   │   ├── Docs # vitepress docs static resources, auto-generated, try script `docs:build`\n│   │   ├── UserData # webview2 user data, auto-generated during application runtime\n│   │   └── # ...\n│   └── # ...\n├── diagrams # diagrams about 4+1 view model\n├── docs # vitepress documentation\n├── frontend # sources related to frontend code, workplace managed by PNPM\n│   ├── packages # frontend components, icons, etc.\n│   ├── src # wails frontend sources\n│   │   ├── vite-env.d.ts # put go struct associated types into it\n│   │   └── # ...\n│   └── # ...\n├── screenshots # README application preview screenshots\n├── main.go # wails main application, presentation layer\n├── main.wails.go # wails life cycle\n├── wails.json # wails CLI config\n└── # ...\n```\n\n## Development View\n\n![Package Diagram](./diagrams/package.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjinyaoma%2Fmy-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjinyaoma%2Fmy-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjinyaoma%2Fmy-app/lists"}