Web application projects are great for those learning web frameworks. Most of them are full stack projects, which means they require a database, a back-end to manage the data, and a front-end to render the user interface. They typically require the ability to create, read, update, and destroy (CRUD) a variety of data.
There are so many different technologies to use to build web applications, as well as varying methodologies. From using server-rendered forms to building a single page app (SPA) with an API, how you go about it will depend on what you're building and what you're learning.
The complexity of web applications can be deep, but rudimentary versions of the projects that follow can be built pretty quickly. Polishing, securing, and fleshing out web apps takes time, but something basic can be built in a matter of hours or days.
Whether you want to be a back-end, front-end, or full stack web developer, the ideas will be great for learning as they cover a lot of the common concepts like authentication, authorization, managing data, and building interfaces.
Technologies of Interest
Modern languages all have at least one web application framework that handles a lot of the core needs and setup. These frameworks will let you get building web applications pretty quickly.
- Django — Python web app framework
- Express — Node.js minimal web app framework
- Laravel — PHP web app framework
- Phoenix — Elixir web app framework
- Redwood — newer, opinionated TypeScript web app framework
- Revel — Go web app framework
- Rocket — Rust web app framework
- Ruby on Rails — Ruby web app framework; I've used this for over a decade, and it does the trick!
Web application frameworks alone might not be enough though, as you may need to pull in libraries from the JS ecosystem, especially for writing the front-end code (styles, mark-up, and JS). If you're wanting to use web components or a front-end framework, check out these libraries:
When it comes to building an API, GraphQL would be my technology of choice because of its flexibility and strong types. But there are some other options out there:
- Roll your own JSON API! This is fine for experimenting and smaller projects.
- JSON:API spec
- OpenAPI spec
- JSON Schema
Because most web applications require some sort of server and a database, you'll need to configure the app to run somewhere. When building a project, you'll typically run what you're building on your own computer, which can serve requests to your web browser. This is great because it doesn't cost anything. The downside is that your project isn't accessible to others then. That's probably all right while you're learning. But if you ever want to make something that others can use, you'll want to deploy your application to a host. How you go about that is beyond the scope of this book, but there are lots of resources out there.