Avatar of Max Musing

Max Musing

Founder & CEO at BaseDash
Avatar of maxmusing
Founder & CEO at BaseDash
Recommends
Node.jsNode.js
at

It's probably worth investing some time for your team to learn Node.js. There's very little overhead, especially with a framework like ExpressJS, so if your team is familiar with JavaScript it should be a quick process.

It handles I/O really well out of the box, and has a strong community with great open source libraries. Since you're using React on the front end, there's also some benefit to being able to use JavaScript throughout your stack.

READ MORE
10 upvotes13.9K views
Avatar of maxmusing
Founder & CEO at BaseDash
Recommends
Socket.IOSocket.IO
at

Socket.IO is great for building real-time systems like chat. It's effectively a nice wrapper around WebSockets, with the ability to fallback to other methods for browsers that don't support it. We just used it to implement real-time collaboration at BaseDash, including a chat system like you're looking to build.

Node.js is probably the correct choice, especially if you're already familiar with it You'll probably still need to build an API to send requests to your server, and then use Socket.IO to push messages to your clients. This will let you authenticate users and store messages on your database so you can retrieve them later. PostgreSQL and MongoDB are good options for your database, you should be fine either way. Don't worry about speed, they'll both be sufficient.

React on the front end makes it really simple to handle real-time updating data. Again, even better since you're already familiar.

READ MORE
10 upvotes11.6K views
Avatar of maxmusing
Founder & CEO at BaseDash
Recommends
Node.jsNode.js
at

From my experience of the early startup world, a majority of companies these days use Node.js. Python and Go are the next biggest languages, but significantly smaller than Node.

However, if you're having trouble with the front end aspect of Django, using Node probably won't make that easier for you. You'll have a lot more options between front end frameworks (React, Vue.js, Angular 2) , but they'll definitely take more time to learn than Django's templating system.

Think about whether you want to focus on front end or back end for now, and make a decision from there.

READ MORE
9 upvotes57.7K views
Avatar of maxmusing
Founder & CEO at BaseDash
Recommends
Node.jsNode.js
at

Go with Node.js. There's something really satisfying about being able to use a single language across your entire tech stack. Especially once you integrate GraphQL, which is effectively JSON.

Your second best option is Go, but the ecosystem around Node.js is quite a bit stronger. This will play a big factor when you start building functionality like file management, messaging (especially in real-time), and authentication. The libraries and documentation are just stronger for Node.

READ MORE
6 upvotes2 comments5K views
Avatar of maxmusing
Founder & CEO at BaseDash
Recommends
PostgreSQLPostgreSQL
at

Node.js is a great option for real-time applications, especially in conjunction with Socket.IO.

In terms of databases, I'd go with PostgreSQL. MongoDB has its benefits (schema-less, sharding, map-reduce), but for most CRUD-based apps, it makes sense to store the bulk of your data in a relational database (of which PostgreSQL is the best IMO). You can throw in MongoDB if you have a specific need for it. There's certainly no need to use both MySQL and PostgreSQL.

As for GraphQL, it can be nice to work with since you don't need to predefine specific data endpoints on your backend, instead shifting the power to your frontend in requesting the data it needs. It's also useful for public APIs, when you don't know what data users want (see Github's API). It can be useful at the early stage when you're prototyping and want to be able to fetch data quickly, but certainly isn't necessary.

At BaseDash we use Node.js, ExpressJS, Socket.IO, PostgreSQL, and Sequelize to fit our use case of database management and real-time operations.

READ MORE
5 upvotes1 comment15.6K views
Avatar of maxmusing
Founder & CEO at BaseDash
Recommends
DjangoDjango
at

Django is great if you're new to web development. It'll handle all the annoying things like user authentication and data migrations that you really won't want to manage yourself.

Since you're quite new to web development, you might not want to jump into React right away. Django provides a good templating language that'll let you customize the front end of your app without having to worry about state too much. Once your needs get more complex, you can add React into your project one component at a time.

As for databases, PostgreSQL is a great choice. I wouldn't go with AWS for hosting though; DigitalOcean has all the functionality you need at the same price, but with a much more user-friendly interface for beginners. You'll probably be using Droplets for server hosting, DigitalOcean Spaces for file storage, and DigitalOcean Managed Databases to host your database.

You also mentioned generating charts. Chart.js is quite popular and easy to use, and should have all the functionality you need for an accounting app.

READ MORE
5 upvotes4.9K views
Avatar of maxmusing
Founder & CEO at BaseDash
Recommends
BaseDashBaseDash

You're right that there isn't a great way to join tables with Airtable's API. The closest you can get is to use a linked record field, which acts as a pointer to another record. You still end up with the problem you mentioned of having to run another query on the second table separately.

Your best bet is to stick with an actual SQL database. Using an ORM should make your life significantly easier so you don't actually have to write raw SQL. If you still want a graphical interface to your data, BaseDash lets you view and edit SQL databases just like Airtable. A full API with join support is coming soon, so that could be your perfect solution to this problem.

READ MORE
5 upvotes2.2K views
Avatar of maxmusing
Founder & CEO at BaseDash
Recommends
PostgreSQLPostgreSQL
at

How are you managing your PostgreSQL schema? It doesn't have to be hard to add or remove fields. We're working on a SQL database client at BaseDash that lets you add/remove columns in a couple clicks.

If you decide to migrate some of your data to MongoDB, you can definitely manage the two databases in parallel. For any records that need to be linked, you can treat it just like a foreign key by creating a column that points to an ID in the other database. For example, you might store user settings in MongoDB, and include a UserId field that points to your User record in your Postgres database.

READ MORE
4 upvotes1 comment6.7K views
Avatar of maxmusing
Founder & CEO at BaseDash
Recommends
Node.jsNode.js
at

Node.js is the most popular of the three among modern tech stacks, and for good reason: it's simple, lightweight, and fast. Plus, being popular has its advantages: better documentation, libraries, and support when you get stuck (which you undoubtedly will as a beginner).

Pair it with ExpressJS for the best experience.

READ MORE
4 upvotes1.4K views
Avatar of maxmusing
Founder & CEO at BaseDash
Recommends
Node.jsNode.js
at

Node.js and ExpressJS is a good choice for backend, the stack makes it really easy to build a REST API.

I'm not exactly sure what you mean by using ExpressJS as an admin panel. Express is a lightweight backend framework for Node.js that lets you build your endpoints quickly and with minimal code. If you're looking for an admin panel to manage the data on your mobile app, check out BaseDash. It lets you view and edit data from your SQL database with the simplicity of Airtable.

READ MORE
3 upvotes1 comment5.3K views