{"id":30769913,"url":"https://github.com/jaswdr/yamlforge","last_synced_at":"2025-09-04T23:04:31.309Z","repository":{"id":311972701,"uuid":"1045832013","full_name":"jaswdr/yamlforge","owner":"jaswdr","description":"🔥 Build web apps without coding! YAML → Full-stack application with REST APIs, forms, validation, authentication, and responsive UI. One binary, zero setup required.","archived":false,"fork":false,"pushed_at":"2025-08-27T19:48:44.000Z","size":322,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-28T04:23:01.968Z","etag":null,"topics":["full-stack","rest-api","single-binary","web-application-generator","yaml"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jaswdr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-08-27T19:21:44.000Z","updated_at":"2025-08-27T19:48:48.000Z","dependencies_parsed_at":"2025-08-28T04:26:20.960Z","dependency_job_id":"1c691124-2c52-422b-b0d5-968a11552b2d","html_url":"https://github.com/jaswdr/yamlforge","commit_stats":null,"previous_names":["jaswdr/yamlforge"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/jaswdr/yamlforge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaswdr%2Fyamlforge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaswdr%2Fyamlforge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaswdr%2Fyamlforge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaswdr%2Fyamlforge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jaswdr","download_url":"https://codeload.github.com/jaswdr/yamlforge/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaswdr%2Fyamlforge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273685604,"owners_count":25149722,"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","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["full-stack","rest-api","single-binary","web-application-generator","yaml"],"created_at":"2025-09-04T23:02:40.581Z","updated_at":"2025-09-04T23:04:31.266Z","avatar_url":"https://github.com/jaswdr.png","language":"Go","readme":"# yamlforge\n\nyamlforge is a single-binary tool that generates and serves complete web applications from YAML configuration files. Define your data models, validation rules, and UI preferences in YAML, and yamlforge instantly creates a working application with both backend API and frontend interface.\n\n**⚠️ Note**: YamlForge is in active development. Expect breaking changes and evolving APIs until v1.0.0 release.\n\n![](./docs/index.png)\n\n![](./docs/form.png)\n\n![](./docs/openapi.png)\n\n## Features\n\n- **Single YAML file**: Create functional web applications without writing code just a single YAML file\n- **Single Binary**: No dependencies or runtime requirements\n- **Instant Preview**: Live development server with hot reload\n- **Auto-generated API**: RESTful endpoints with pagination, filtering, and sorting\n- **Built-in UI**: Responsive web interface with list, form, and detail views\n- **SQLite Support**: Embedded database with automatic schema generation\n- **Validation**: Server-side validation with customizable rules\n- **Field Types**: Support for text, number, boolean, email, datetime, enum, and more\n\n## Quick Start\n\n### Installation\n\n```bash\ngo get github.com/yamlforge/yamlforge\ngo build -o yamlforge cmd/yamlforge/main.go\n```\n\n### Usage\n\n1. Create a YAML configuration file:\n\n```yaml\napp:\n  name: \"My App\"\n  version: \"1.0.0\"\n\ndatabase:\n  type: sqlite\n  path: \"./data.db\"\n\nmodels:\n  Task:\n    fields:\n      id:\n        type: id\n        primary: true\n      title:\n        type: text\n        required: true\n      completed:\n        type: boolean\n        default: false\n```\n\n2. Start the development server:\n\n```bash\n./yamlforge serve myapp.yaml\n```\n\n3. Open your browser to `http://localhost:8080`\n\n## Command Line Usage\n\n```bash\n# Start development server\nyamlforge serve \u003cconfig.yaml\u003e [options]\n\n# Validate configuration\nyamlforge validate \u003cconfig.yaml\u003e\n\n# Options\n  -port int      Server port (default 8080)\n  -host string   Server host (default \"0.0.0.0\")\n```\n\n## Configuration Reference\n\n### App Configuration\n\n```yaml\napp:\n  name: \"Application Name\"\n  version: \"1.0.0\"\n  description: \"Application description\"\n```\n\n### Database Configuration\n\n```yaml\ndatabase:\n  type: sqlite\n  path: \"./data.db\"\n```\n\n### Server Configuration\n\n```yaml\nserver:\n  port: 8080\n  host: \"0.0.0.0\"\n  cors:\n    enabled: true\n    origins: [\"*\"]\n  auth:\n    type: jwt\n    secret: \"your-secret-key\"\n    expires: \"24h\"\n```\n\n### UI Configuration\n\n```yaml\nui:\n  theme: \"light\" # light | dark | auto\n  title: \"My App\"\n  logo: \"./logo.png\"\n  layout: \"sidebar\" # sidebar | topbar\n```\n\n### Model Definition\n\n```yaml\nmodels:\n  ModelName:\n    fields:\n      fieldName:\n        type: text\n        required: true\n        # ... other validations\n\n    ui:\n      list:\n        columns: [\"field1\", \"field2\"]\n        sortable: [\"field1\"]\n        searchable: [\"field1\"]\n      form:\n        fields: [\"field1\", \"field2\"]\n\n    permissions:\n      create: \"authenticated\"\n      read: \"all\"\n      update: \"owner\"\n      delete: \"admin\"\n```\n\n## Field Types\n\n### Basic Types\n\n- `text`: String field with min/max length\n- `number`: Integer with min/max value\n- `boolean`: True/false checkbox\n- `datetime`: Date and time picker\n- `date`: Date only\n- `time`: Time only\n\n### Special Types\n\n- `id`: Auto-generated unique identifier\n- `email`: Email with validation\n- `password`: Secure password field\n- `enum`: Select from options\n- `relation`: Foreign key reference\n- `array`: List of items\n- `markdown`: Rich text editor\n\n### Validations\n\n- `required`: Field must have a value\n- `unique`: Value must be unique\n- `min`/`max`: Length or value limits\n- `pattern`: Regex validation\n- `default`: Default value\n\n## API Endpoints\n\nFor each model, the following endpoints are automatically generated:\n\n- `GET /api/{model}` - List with pagination\n- `GET /api/{model}/{id}` - Get single record\n- `POST /api/{model}` - Create new record\n- `PUT /api/{model}/{id}` - Update record\n- `DELETE /api/{model}/{id}` - Delete record\n- `POST /api/{model}/bulk` - Bulk operations\n\n### Query Parameters\n\n- `page`: Page number (default: 1)\n- `page_size`: Items per page (default: 20)\n- `sort`: Sort fields (prefix with `-` for DESC)\n- `search`: Search in searchable fields\n- `filter.{field}`: Filter by field value\n\nExample: `/api/tasks?page=2\u0026sort=-created_at\u0026filter.status=todo`\n\n## Examples\n\nSee the `examples/` directory for complete examples:\n\n- `blog.yaml` - Simple blog application\n- `tasks.yaml` - Task management system\n- `users.yaml` - User management with relationships\n\n## Development\n\n### Project Structure\n\n```\nyamlforge/\n├── cmd/yamlforge/      # Main entry point\n├── internal/\n│   ├── parser/         # YAML parsing\n│   ├── database/       # Database layer\n│   ├── api/           # API handlers\n│   ├── server/        # HTTP server\n│   ├── ui/            # Frontend assets\n│   └── validation/    # Validation logic\n└── examples/          # Example configurations\n```\n\n### Building from Source\n\n```bash\n# Install dependencies\ngo mod download\n\n# Build binary\ngo build -o yamlforge cmd/yamlforge/main.go\n\n# Run tests\ngo test ./...\n```\n\n## License\n\nMIT License - see LICENSE file for details\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaswdr%2Fyamlforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjaswdr%2Fyamlforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaswdr%2Fyamlforge/lists"}