How we built Townie – an app that generates fullstack apps
Townie is a beta app that generates full-stack applications using large language models, simplifying software development for non-programmers with instant deployment and features like code editing and multiple application generation.
Read original articleTownie is a newly redesigned app that generates full-stack applications, currently in beta. The development of Townie leverages recent advancements in code generation, particularly through the use of large language models (LLMs) like Claude 3.5 Sonnet. This approach allows users to create software through conversational interactions, making it accessible even to those without programming knowledge. The app aims to streamline the process of generating both frontend and backend components of applications, addressing a significant barrier for non-programmers by enabling instant deployment of generated code. The author, JP Posma, detailed the prototyping process, which included building a basic version of code generation that can create applications like a Hacker News clone with a backend and database. The prototype, named VALL-E, incorporates features such as code editing, syntax highlighting, and the ability to generate multiple applications simultaneously. Challenges included ensuring database persistence and optimizing costs associated with using LLMs. The author also introduced an evaluation system to assess the performance of generated applications, focusing on error detection and functionality. Overall, the project reflects a vision of making the full capabilities of computing accessible to all users.
- Townie is an app that generates full-stack applications using LLMs.
- The app aims to simplify software development for non-programmers by enabling instant deployment.
- The prototype, VALL-E, includes features for code editing and multiple application generation.
- Challenges included database persistence and cost optimization for LLM usage.
- An evaluation system was implemented to assess the functionality of generated applications.
Related
Self hosting a Copilot replacement: my personal experience
The author shares their experience self-hosting a GitHub Copilot replacement using local Large Language Models (LLMs). Results varied, with none matching Copilot's speed and accuracy. Despite challenges, the author plans to continue using Copilot.
Converting Codebases with LLMs
Mantle discusses using Large Language Models (LLMs) to convert codebases, emphasizing benefits like improved maintainability and performance. They highlight strategies for automating code translation and optimizing the process.
Show HN: NoteTech – Create personal automations by writing notes
NoteTech is a platform enabling users to create automations and tools through natural language notes. Currently in Beta, it invites users to join for access and community updates.
Where Are Large Language Models for Code Generation on GitHub?
The study examines Large Language Models like ChatGPT and Copilot in GitHub projects, noting their limited use in smaller projects, short code snippets, and minimal modifications compared to human-written code.
An open source Claude Artifacts – generate small apps with one prompt
Llama Coder is an open-source tool that generates small applications from a single prompt using the Llama 3 405B model, aiming to assist developers in rapid application development with future enhancements planned.
- Users appreciate the speed and ease of generating applications, with some successfully creating functional projects quickly.
- Many encounter limitations with complex projects, where the AI struggles to resolve issues or produces suboptimal code.
- There are concerns about the security and reliability of AI-generated applications, particularly regarding the AI's decision-making process.
- Some users express frustration with the need for manual corrections, noting that while AI can handle a majority of the work, the final adjustments can be time-consuming.
- Questions arise about the technology's flexibility, such as whether it can support various backend languages and if self-hosting is an option.
Another issue with complex projects is that llms will not tell you what you don't know. They will happily go about designing crappy code if you ask them for a crappy solution and they don't have the ability to recommend a better path forward unless explicitly prompted.
That said, I had Claude generate most of a tile-based 2D pixel art rendering engine[1] for me, but again, once things got complicated I had to go and start hand fixing the code because Claude was no longer able to make improvements.
I've seen these failure modes across multiple problem domains, from CSS (alternating between two broken css styles, neither came close to fixing the issue) to backend, to rendering code (trying to get character sprites correctly on the tiles)
[1] https://www.generativestorytelling.ai/town/index.html notice the tons of rendering artifacts. I've realized I'm going to need to rewrite a lot of how rendering happens to resolve them. Claude wrote 80% of the original code but by the time I'm done fixing everything maybe only 30% or so of Claude's code will remain.
It is a very annoying experience even if you know what you are doing; it is still much faster than what you would get done writing code but it is very frustrating getting the last 10% right; you spend a day on 80%, two days on 10 and a week on the last 10%. If I just jump in and fix the code myself, it is about 1 day for the same project, which is still amazing (and not imaginable before).
People complaining that it sucks and it cannot figure things out often are right, however, it is a lot better than what we had before, which was doing all this by hand (causing many people to procrastinate over even starting a side project while have 1000s in mind every day).
These types of services are important and I like this val.town idea. Well done and keep going.
There's still some glitches, occasionally the entire app code would get replaced by the function the LLM was trying to update. I could fix it by telling it that's what had happened, and it would then fill everything in again... Waiting for the entire app to be rewritten each time was a bit annoying.
It got the initial concepts of the app very very quickly running, but then struggled with some CSS stuff, saying it would try a different approach, or apologising for missing things repeatedly...and eventually it told me it would try more radical approaches and wrote online styles... I wonder if the single file approach has limitations in that respect.
Very interesting, very fun to play with.
I'm kind of concerned for security things with LLM written apps - you can ask it to do things and it says yes, without really thinking if it's a good idea or not.
But cool!
And anything which helps with the internet to be full of small independent quirky creative ideas, the better.
prompt = """
You run in a loop of Thought, Action, PAUSE, Observation.
At the end of the loop you output an Answer
Use Thought to describe your thoughts about the question you have been asked.
Use Action to run one of the actions available to you - then return PAUSE.
Observation will be the result of running those actions.
..."""
Seems like a really powerful technique to have LLMs act on their own feedback.E.g. have humans + LLMs generate a bunch of prompts that goes into this system, and it spits out a bunch of fully-fledged applications, which can be used to train an even bigger model.
Related
Self hosting a Copilot replacement: my personal experience
The author shares their experience self-hosting a GitHub Copilot replacement using local Large Language Models (LLMs). Results varied, with none matching Copilot's speed and accuracy. Despite challenges, the author plans to continue using Copilot.
Converting Codebases with LLMs
Mantle discusses using Large Language Models (LLMs) to convert codebases, emphasizing benefits like improved maintainability and performance. They highlight strategies for automating code translation and optimizing the process.
Show HN: NoteTech – Create personal automations by writing notes
NoteTech is a platform enabling users to create automations and tools through natural language notes. Currently in Beta, it invites users to join for access and community updates.
Where Are Large Language Models for Code Generation on GitHub?
The study examines Large Language Models like ChatGPT and Copilot in GitHub projects, noting their limited use in smaller projects, short code snippets, and minimal modifications compared to human-written code.
An open source Claude Artifacts – generate small apps with one prompt
Llama Coder is an open-source tool that generates small applications from a single prompt using the Llama 3 405B model, aiming to assist developers in rapid application development with future enhancements planned.