How to build a web app in 2017?
Tags: webdev, discuss
Published: 2017-11-22 15:13:15

---
title: How to build a web app in 2017?
published: true
description: 
tags: webdev, discuss
---

I know how to build tools, backends and APIs and I think I'm good at it. I've also built some web apps but those web apps have been of the traditional type: multi page applications where 90-95% of the logic was server side. Every page was fully rendered on the server and augmented by jQuery, Bootstrap and the usual suspects. Ajax was used to communicate to the server when needed. Basically like web apps in the 2000s :-D

Recently, to learn something new, I've ported the JavaScript of one of such apps (in Rails) to ES6 using webpack but it's still a traditional app.

I have been tasked by a client to write the prototype of a new app (as a solo developer for now) and since the deadline is not a cut-throat I would like to set the foundation for something "more modern" and learn new things in the process, especially because my skills on the frontend are definitely not on par with my skills on the backend. Also the word prototype in company lingo, as you all know, means: ok it works, let's add a gazillion features yesterday. 

The first prototype of this app will basically be a form where the user can input some data and upload some pictures. The output will be some JSON then processed by the server in a separate process, yet to be written, that has to do some other stuff with it (sorry if I'm being too generic).

In the medium-long term this functionality (the form) will be part of a, hopefully, giant dashboard + admin that reads data from multiple sources (APIs and a backend), has analytics in it (that's why dashboard) and has notifications and status updates so that the user can know what the heck is going on :-D

I'm telling you this because knowing the direction the app it will likely take it's useful even when you have to come up with a prototype.

If I didn't care about learning new things I would start "tomorrow" by designing the backend for the prototype, then firing up Rails or Flask with jQuery and a CSS framework and do the old multi page web app thing as usual.

But I do care so I'm asking for your help. I've read a bunch of stuff on the web today (here it's 4pm) but I'm more confused than before. I'll end up with some statements and questions to help you (or me?) understand:

* First version is a form, goal is to make it become a giant dashboard & admin tool.

* Can it be a SPA? Should it be a SPA? Can a dashboard/admin be a SPA? It's a private app so nobody cares about SEO. I've never written a SPA by myself (I've worked on one with Backbone.js back in the day but it feels like a thousand years ago).

* Can it be a MPA? Should it be a MPA? Can a dashboard/admin be a MPA with Vue?

* Mobile first (but has to work on the desktop) would be greatly appreciated by me and the future users I am sure

* I would like to use Vue.js for the frontend

* How can I decide how much logic is in the frontend or the backend? Who shall do the routing? Who shall do the rendering? Will the server basically be just an API?

* I would like to design the web server as a support for the frontend, not the other way around (shout out to 37signals :D)

* I will be the only dev for now (frontend and backend) and I would like to use either Ruby/Rails or Python/Flask for this project (mostly because I don't want to learn a new framework for server of this project).

* Since I am an army of one keep in mind I can't spend 3 months learning React, Redux, TypeScript and Phoenix from scratch, let's be practical.

* Am I going to die?

As you can see I'm a little confused and eager to learn.
 
Thank you!