{"id":36494332,"url":"https://github.com/manicar2093/gomancer","last_synced_at":"2026-01-12T01:59:31.858Z","repository":{"id":283793104,"uuid":"951680375","full_name":"manicar2093/gomancer","owner":"manicar2093","description":"Gomancer is a powerful code generator designed to make API development in Go BLAZINGLY fast! ","archived":false,"fork":false,"pushed_at":"2025-09-05T00:17:28.000Z","size":1717,"stargazers_count":1,"open_issues_count":7,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-05T00:19:08.612Z","etag":null,"topics":["code","full-stack","fullstack","generation","go","golang","phoenix","phoenix-framework","ssr"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"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/manicar2093.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-20T04:26:45.000Z","updated_at":"2025-08-06T04:24:08.000Z","dependencies_parsed_at":"2025-06-03T09:36:51.549Z","dependency_job_id":"212637ba-a1cd-4aff-9595-2bdb433b8b7f","html_url":"https://github.com/manicar2093/gomancer","commit_stats":null,"previous_names":["manicar2093/gomancer"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/manicar2093/gomancer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manicar2093%2Fgomancer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manicar2093%2Fgomancer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manicar2093%2Fgomancer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manicar2093%2Fgomancer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/manicar2093","download_url":"https://codeload.github.com/manicar2093/gomancer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manicar2093%2Fgomancer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28331489,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T00:36:25.062Z","status":"ssl_error","status_checked_at":"2026-01-12T00:36:15.229Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["code","full-stack","fullstack","generation","go","golang","phoenix","phoenix-framework","ssr"],"created_at":"2026-01-12T01:59:31.221Z","updated_at":"2026-01-12T01:59:31.853Z","avatar_url":"https://github.com/manicar2093.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gomancer\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/go-mod/go-version/manicar2093/gomancer\" alt=\"Go Version\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/manicar2093/gomancer\" alt=\"License\"\u003e\n\u003c/div\u003e\n\n⚠️ **Note:** Building in process. I hope to be able to create many things to deliver v1.0.0 ⚠️\n\n## Overview\n\nGomancer is a powerful code generator designed to make API development in Go **BLAZINGLY** fast! It automates the creation of models, controllers, repositories, and database migrations, allowing you to focus on your business logic rather than boilerplate code.\n\nInspired by tools like Phoenix's generators in Elixir, Gomancer brings rapid API development to the Go ecosystem by leveraging existing powerful packages and organizing them in a cohesive way.\n\n## Quick Start\n\nCreate a new project:\n```bash\ngomancer new github.com/user/great_api\ncd great_api\ngo mod tidy\nnpm i  # for Prisma dependencies\n```\n\nGenerate a complete API resource:\n```bash\ngomancer gen User name:string age:int8 dob:time:optional --pk-uuid\n```\n\nAnd just like that, you're ready to go with a fully functional API!\n\n## Installation\n\n```bash\ngo install github.com/manicar2093/gomancer@latest\n```\n\n## Features\n\n### Project Initialization\nGomancer creates a well-structured project with:\n- Echo web framework configuration\n- Prisma for database migrations\n- GORM for database access\n- Templ for SSR (Server Side Rendering)\n- TemplUI for html components\n- Environment configuration\n- GitHub workflow (bump_version) for automatic semantic versioning and changelog generation\n- Air for hot reloading\n- And more!\n\n### Code Generation\nGenerate complete API resources with a single command:\n- Models with validation\n- Controllers with CRUD endpoints\n- Repositories with database operations\n- Database migrations\n\n### Supported Data Types\nGomancer supports a wide range of data types:\n- Basic types: int, int8, int16, int32, int64, float32, float64, string, bool\n- Complex types: time, decimal, uuid\n- Enums (with custom values)\n- Optional fields\n\n### Primary Key Options\n- Auto-increment integer (default)\n- UUID (with `--pk-uuid` flag)\n\n## Usage Examples\n\n### Creating a New Project\n```bash\ngomancer new github.com/username/awesome-api\n```\n\n### Generating Resources\n\nAll resources will generate Web and Rest controllers\n\nBasic resource with auto-increment ID:\n```bash\ngomancer gen Client name:string email:string age:int\n```\n\nResource with UUID primary key:\n```bash\ngomancer gen Product name:string price:decimal stock:int --pk-uuid\n```\n\nResource with optional fields:\n```bash\ngomancer gen User name:string bio:string:optional avatar:string:optional\n```\n\nResource with enum field:\n```bash\ngomancer gen Order status:enum/pending/processing/shipped/delivered total:decimal\n```\n\n## Project Structure\n\nWhen you create a new project with Gomancer, it generates the following structure:\n\n```\n\u003cproject_name\u003e/\n├── .air.toml           # Configuration for hot reloading\n├── .cz.toml            # Commitizen configuration\n├── .env                # Environment variables\n├── .gitignore\n├── go.mod              # Go module definition\n├── Makefile            # Templ and Tailwind used commands\n├── package.json        # Node.js dependencies (for Prisma)\n├── README.md           # Project documentation\n├── Taskfile.yml        # Task runner configuration\n├── .github\n│   └── workflows\n│       └── bump_version.yml        # GitHub Actions workflow for automatic version bumping\n├── cmd\n│   └── service\n│       ├── main.go                 # Application entry point\n│       ├── assets\n│       │   ├── css\n│       │   │   └── styles.css\n│       │   ├── img\n│       │   │   ├── favicon.ico\n│       │   │   └── gomancer.png\n│       │   └── js\n│       │       ├── htmx@2.0.4.min.js\n│       │       ├── popover.min.js\n│       │       ├── selectbox.min.js\n│       │       ├── theme-setter.js\n│       │       └── toggle-theme.js\n│       ├── controllers\n│       │   ├── init_rest.go        # REST initial controller\n│       │   ├── init_web.go         # Web initial controller\n│       │   └── initpages           # Initial templ docs\n│       │       └── home.templ\n│       ├── sources\n│       │   └── css\n│       │       └── input.css\n│       ├── translations\n│       │   ├── translations.go\n│       │   ├── en\n│       │   │   └── translations.yaml\n│       │   └── es\n│       │       ├── translations.yaml\n│       │       └── validator.go\n│       └── ui\n│           ├── components\n│           │   ├── button\n│           │   │   └── button.templ\n│           │   ├── drawer\n│           │   │   └── drawer.templ\n│           │   ├── form\n│           │   │   └── form.templ\n│           │   ├── icon\n│           │   │   ├── icon_data.go\n│           │   │   ├── icon_defs.go\n│           │   │   └── icon.go\n│           │   ├── input\n│           │   │   └── input.templ\n│           │   ├── label\n│           │   │   └── label.templ\n│           │   ├── pagination\n│           │   │   └── pagination.templ\n│           │   ├── popover\n│           │   │   └── popover.templ\n│           │   ├── selectbox\n│           │   │   └── selectbox.templ\n│           │   ├── table\n│           │   │   └── table.templ\n│           │   └── toggle\n│           │       └── toggle.templ\n│           ├── layouts\n│           │   ├── drawer.templ\n│           │   ├── flash_messages.templ\n│           │   ├── Initial.templ\n│           │   └── sidemenu.templ\n│           └── utils\n│               └── templui.go\n├── core\n│   └── ...\n├── internal\n│   ├── domain\n│   │   └── models                  # Here will be all your models\n│   │       └── init.go\n├── pkg\n│   ├── config\n│   │   └── config.go\n│   ├── generators\n│   │   ├── entities.go\n│   │   └── generators.go\n│   └── versioning\n│       └── version.go\n└── prisma\n    └── schema\n        └── schema.prisma\n\n```\n\n## Why Gomancer?\n\nI started with the following question: \n\n**Do we really need a fullstack framework for Golang?** \n\nI think Go has many powerful packages to handle projects of all sizes, but there was no way to create APIs quickly and efficiently.\n\nOnce I tried to learn Elixir and Phoenix, I was shocked by the `phx.gen` tool. You can get a usable API in milliseconds, even create CRUDs with just a CLI command. **Why not bring this to Go?**\n\nWe have everything: ORMs, HTTP Servers, UI Libraries, Validation packages..._EVERYTHING!_ We just need to gather them all in one place, ready to be used.\n\nThat's why Gomancer was born.\n\n## About types\n\nNow the only thing to notice is all dates are handled as UTC and show as Local when data is shown in a HTML input :/. There is an issue [#27](https://github.com/manicar2093/gomancer/issues/27) to review this.\n\n## Roadmap\n\n- [X] Start a project\n- [X] Create controller\n- [ ] Create controller testing\n- [X] Create models\n- [X] Create migrations with Prisma\n- [X] Create CRUD repository\n- [X] Create CRUD testing\n- [X] Create all at once: controller, model, migration and repository\n- [ ] Create API documentation\n- [ ] Create auth implementation\n- [X] Add CRUD HTML templates\n- [ ] Add CRUD HTML testing\n- [ ] Add API testing\n\n## Known Issues\n\n- On PartialUpdateById test bool and enums (and it optional variations) has no random validations. This is due bool just has 2 possible values and enums can have from 1 to many. This makes it hard to randomize tests.\n- On command when writing an attribute called data_32 snake case is not well converted. This can cause problems with Gorm ORM due gorm will transform it to data32 and model will be data_32. Horrible, but avoidable if not use _ in attributes declaration\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanicar2093%2Fgomancer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmanicar2093%2Fgomancer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanicar2093%2Fgomancer/lists"}