{"id":29690737,"url":"https://github.com/typefox/coding.waterkant.2025","last_synced_at":"2025-11-06T21:03:32.171Z","repository":{"id":303157875,"uuid":"1013438026","full_name":"TypeFox/Coding.Waterkant.2025","owner":"TypeFox","description":"Project for Coding.Waterkant 2025","archived":false,"fork":false,"pushed_at":"2025-07-14T06:25:09.000Z","size":132,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-18T14:53:46.597Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/TypeFox.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,"zenodo":null},"funding":{"github":"TypeFox"}},"created_at":"2025-07-03T22:50:32.000Z","updated_at":"2025-07-14T06:25:12.000Z","dependencies_parsed_at":"2025-07-06T03:17:53.145Z","dependency_job_id":"d0f57dae-a3d8-4512-96d3-e24fbc2b6db0","html_url":"https://github.com/TypeFox/Coding.Waterkant.2025","commit_stats":null,"previous_names":["typefox/coding.waterkant.2025"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TypeFox/Coding.Waterkant.2025","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TypeFox%2FCoding.Waterkant.2025","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TypeFox%2FCoding.Waterkant.2025/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TypeFox%2FCoding.Waterkant.2025/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TypeFox%2FCoding.Waterkant.2025/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TypeFox","download_url":"https://codeload.github.com/TypeFox/Coding.Waterkant.2025/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TypeFox%2FCoding.Waterkant.2025/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266631707,"owners_count":23959422,"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-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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":[],"created_at":"2025-07-23T06:37:42.136Z","updated_at":"2025-11-06T21:03:32.165Z","avatar_url":"https://github.com/TypeFox.png","language":"TypeScript","readme":"\u003c!-- markdownlint-disable MD033 --\u003e\n# Semiformal Web Apps\n\nThis is a project contributed by TypeFox to Coding.Waterkant 2025.\n\nWhile this project demonstrates AI-powered web app generation, its primary purpose is to introduce the [Semiformal](https://www.typefox.io/blog/boost-your-ai-apps-with-dsls/) approach for bidirectional human-AI interactions.\n\nThe project consists of a **Langium grammar** defining the Semiformal Web Apps (SWA) language, a **VSCode extension** for editing SWA files, and a **CLI** that uses AI to generate web apps based on SWA specifications.\n\n## Prerequisites\n\n* Install Node LTS (v22.17.0)\n  \u003cdetails\u003e\n    \u003col\u003e\n      \u003cli\u003e\u003ca href='https://github.com/tj/n?tab=readme-ov-file#installation'\u003eInstall n\u003c/a\u003e (Node version manager)\u003c/li\u003e\n      \u003cli\u003eInstall Node LTS: \u003ccode\u003en lts\u003c/code\u003e\u003c/li\u003e\n    \u003c/ol\u003e\n  \u003c/details\u003e\n* Install [Cursor IDE](https://www.cursor.com/) (recommended) or [VSCode](https://code.visualstudio.com/) (no AI support for creating new examples)\n* Install [Docker](https://www.docker.com/) for running the example web apps\n* Install [Ollama](https://ollama.ai/) for using AI models locally\n  \u003cdetails\u003e\n    \u003col\u003e\n      \u003cli\u003eDownload and install Ollama from \u003ca href='https://ollama.ai/'\u003ehttps://ollama.ai/\u003c/a\u003e\u003c/li\u003e\n      \u003cli\u003eRun Ollama.app and allow to expose it to the network\u003c/li\u003e\n      \u003cli\u003ePull the Qwen3 14B model: \u003ccode\u003eollama pull qwen3:14b\u003c/code\u003e\u003c/li\u003e\n    \u003c/ol\u003e\n  \u003c/details\u003e\n\n## Installation\n\n1. Install dependencies (once):\n\n   ```sh\n   npm i\n   ```\n\n2. Build the projects (when language or generator changes):\n\n   ```sh\n   npm run clean \u0026\u0026 npm run build\n   ```\n\n## Usage\n\n1. Open the project in Cursor/VSCode:\n\n   ```sh\n   code .\n   ```\n\n2. Press `F5` to open a new IDE instance with the language extension loaded. The workspace will be the `example-web-apps/` folder.\n3. Create your own `.env` file by copying `.env.template` and filling in your values.\n\n```yaml\n# Only showing selected files\nexample-web-apps/\n├─ models/\n│  └─ *.swa # Semiformal Web App models\n├─ output/\n│  └─ */ # Generated web apps\n├─ .env.template # AI generator config template\n└─ .env # Your personal copy of .env.template used by the generator\n```\n\nFrom there you can:\n\n* Edit existing web app model files `models/*.swa` that describe a web app's structure\n* Generate a new web app based on a .swa model (when using Ollama, run `ollama serve` in a terminal):\n\n  ```sh\n  # The app is generated in `output/\u003capp-name\u003e/`\n  npm run generate \u003cmodels/my-model.swa\u003e \u003capp-name\u003e\n  ```\n\nTo create new types of web apps:\n\n* Manually create a new .swa file in the `models/` folder\u003cbr\u003e\n  or ask Cursor Chat/GitHub Copilot to create one as a starting point for [vibe coding](https://en.wikipedia.org/wiki/Vibe_coding) 😉\n* Then follow the steps above to generate the web app\n\nHint: The AI instructions for vibe coding .swa files are stored in the `.cursor/rules/` and `.github/` folders.\n\n```yaml\n# Only showing selected files\nexample-web-apps/\n├─ .cursor/rules/\n│  └─ semiform-rules.mdc # Cursor instructions for creating .swa files\n└─ .github/\n   └─ copilot-instructions.md # Copilot instructions for creating .swa files\n```\n\n## Modifying the language or generator\n\nTo modify the language or generator, edit the source code in the `packages/` folder.\n\n```yaml\n# Only showing selected files\npackages/\n├─ generator-ai/ # AI generator for web apps\n│  └─ src/prompt-templates/\n│     ├─ backend-prompt.md # Backend prompt template\n│     └─ frontend-prompt.md # Frontend prompt template\n└─ semiformal-web-apps/ # IDE language support powered by Langium\n   └─ src/language/\n      └─ semiformal-web-apps.langium # Langium grammar for .swa files\n```\n\nRemember to rebuild after changing the source code:\n\n```sh\nnpm run clean \u0026\u0026 npm run build\n```\n\nNote: AI instructions and prompts may need to be updated to use the new language.\n\n## What's next?\n\nRead our [blog post](https://www.typefox.io/blog/boost-your-ai-apps-with-dsls/) about Semiformal applications.\n\nThe web app generator is just one type of Semiformal application. Let us brainstorm together—which other possibilities can you imagine...?\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","funding_links":["https://github.com/sponsors/TypeFox"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftypefox%2Fcoding.waterkant.2025","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftypefox%2Fcoding.waterkant.2025","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftypefox%2Fcoding.waterkant.2025/lists"}