{"id":15175509,"url":"https://github.com/primaryobjects/monster-collector","last_synced_at":"2026-01-25T06:42:23.407Z","repository":{"id":241420125,"uuid":"806289988","full_name":"primaryobjects/monster-collector","owner":"primaryobjects","description":"An AI monster generator web app using the Large Language Model (LLM) Cohere with the EntityFramework and Sqlite.","archived":false,"fork":false,"pushed_at":"2024-06-15T00:28:24.000Z","size":1319,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-06T10:44:10.250Z","etag":null,"topics":["ai","cohere","csharp","database","dotnet","entityframeworkcore","large-language-model","linq","llm","sqlite","web","webapp"],"latest_commit_sha":null,"homepage":"","language":"C#","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/primaryobjects.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}},"created_at":"2024-05-26T22:07:59.000Z","updated_at":"2025-07-25T07:25:52.000Z","dependencies_parsed_at":"2024-06-15T01:30:09.531Z","dependency_job_id":"1ed5af1d-a44e-4095-847b-0cc439f914ea","html_url":"https://github.com/primaryobjects/monster-collector","commit_stats":null,"previous_names":["primaryobjects/monster-collector"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/primaryobjects/monster-collector","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/primaryobjects%2Fmonster-collector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/primaryobjects%2Fmonster-collector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/primaryobjects%2Fmonster-collector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/primaryobjects%2Fmonster-collector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/primaryobjects","download_url":"https://codeload.github.com/primaryobjects/monster-collector/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/primaryobjects%2Fmonster-collector/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28747137,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T05:12:38.112Z","status":"ssl_error","status_checked_at":"2026-01-25T05:04:50.338Z","response_time":113,"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":["ai","cohere","csharp","database","dotnet","entityframeworkcore","large-language-model","linq","llm","sqlite","web","webapp"],"created_at":"2024-09-27T12:39:20.158Z","updated_at":"2026-01-25T06:42:23.389Z","avatar_url":"https://github.com/primaryobjects.png","language":"C#","readme":"Monster Collector\n=================\n\n\u003e Ogre with purple bandaids and a temper that leaves crushed bones and broken dreams in its wake.\n\nA simple database of AI-generated monsters.\n\n## About\n\nMonster Collector is a simple web application to create a database of AI-generated monsters.\n\nMonster names and descriptions are generated by the AI large language model (LLM) [Cohere](https://cohere.com). Generated monsters are added to a table displayed on the page and saved to a local database. When generating a new monster, a custom prompt may be used to alter the type of monster created. The custom prompt is appended to the [default prompt](Monster%20Collector/Managers/MonsterFactory.cs#L31-L37) and allows customizing the type of generation from the LLM.\n\nThe table of monsters utilizes the `contenteditable` HTML attribute to allow inline editing of monster details. An ajax [call](Monster%20Collector/wwwroot/js/site.js) triggers the save to an API method on the backend.\n\nAll data changes are saved in an audit log with the history stored in the database. Audit history is available by hovering your mouse over any row in the table.\n\n## Screenshot\n\n![Monster Collector screenshot](screenshot.png)\n\n## Quick Start\n\nInstall the required libraries in VSCode before running the project.\n\n1. Open a Terminal in VSCode.\n2. `dotnet add package Microsoft.EntityFrameworkCore.Design`\n3. `dotnet add package Microsoft.EntityFrameworkCore.Sqlite`\n4. `dotnet tool install --global dotnet-ef`\n5. Create a file `Monster Collector/.env` with the contents:\n    ```\n    CohereApiKey=\u003cYOUR_API_KEY\u003e\n    OpenAIApiKey=\u003cYOUR_API_KEY\u003e\n    ````\n\n*You can register a Cohere API key [here](https://dashboard.cohere.com/api-keys).*\n\n*You can register an OpenAI API key [here](https://platform.openai.com/account/api-keys).*\n\n## Generate Monsters in the Database\n\nTo re-generate the monsters in the database, use the following steps.\n\n1. Delete the files `MonsterManager.sqlite`, `MonsterManager.sqlite-shm`, `MonsterManager.sqlite-wal`.\n\nTo re-generate the entire database, use the following steps.\n\n1. Delete the folder `Migrations`.\n2. `dotnet ef migrations add InitialCreate`\n3. `dotnet ef database update`\n\n### Customizing the Intensity of Monsters Created\n\nMonsters that are generated by the LLM can be customized to almost any style by entering a custom [prompt](Monster%20Collector/Managers/MonsterFactory.cs#L31-L37) in the textbox provided. The custom prompt is appended onto the standard prompt used by the program when generating monsters.\n\nExample 1: \"A beautiful rainbow monster that is friendly and happy.\"\n\nExample 2: \"An extremely dramatic monster constructed from fancy fabrics from around the world.\"\n\n## API methods\n\n#### GET /api/monster/{id}\n\nReturns details for a specific monster by Id. The Id can be found in the table row `data-id` HTML attribute.\n\n#### PUT /api/monster/{id}\n\nUpdates a specific monster by Id and payload.\n\n#### POST /api/monster/\n\nGenerate a new monster.\n\n#### DELETE /api/monster/{id}\n\nDeletes a specific monster by Id.\n\n## Tech Stack\n\n- Visual Studio Code\n- C# .NET 8.0\n- MVC\n- Razor\n- EntityFramework\n- Sqlite\n- LLM Cohere and OpenAI\n\n## License\n\nMIT\n\n## Author\n\nKory Becker http://www.primaryobjects.com/kory-becker\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprimaryobjects%2Fmonster-collector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprimaryobjects%2Fmonster-collector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprimaryobjects%2Fmonster-collector/lists"}