12 Resources That Helped Our Start-up Succeed
In light of having recently launched a web start-up, I figure it's time to give back. Here, I share the experiences gained during the process of getting everything up and running. In our project, a strong focus was put on not making any unnecessary investments; basically, we didn't want to pay for anything that we didn't strictly have to. This article describes some of the technologies that helped us get to where we are now, divided into three categories.
Project Management
I'll start out by talking about about how we organized things. Personally, I think that people spend too much time organizing things. Yes, preparation is important, but honestly, there is also such a thing as overdoing it. We knew that making our site would only be a two-man job, so using a dedicated project management tool (such as Producteev) would probably end up being more a burden than a help. In order to simplify things, we made a shared folder on Google Drive, and In that fateful folder, we created a document with a task list, which leads me to...
Google Docs
There are many reasons why you would need to write things up during your project. Perhaps you just need to jot down some notes about some contents, maybe you need to make a dull spreadsheet containing your expenses. Most likely though, you also need to share these with the other project participants, so why not use a tool that supports collaboration from the get-go? For this purpose, we used Google Docs.
With Google Docs, you can collaborate about making documents, spreadsheets and slides. It has all the functionality needed to make your project succeeds. It's not perfect, but compared to paying fortunes for a commercial suite, it's more than satisfactory.
Slack
Let's face it; if you're going to collaborate, you're going to have to communicate. While using email is all well and good, having the possibility to have a live communication is useful. I would recommend against using your social media for this, as they can be distracting.
Let me introduce Slack. Slack is made for team collaboration, not gossip. Naturally, Slack includes the ability to create private communication channels and such, but perhaps most interesting, it has the possibility to integrate communication from various web services, such as Stripe, Bitbucket and Google Drive, which are also being used in this project.
Development
If you want to build something good, you need good tools. I understand that some people still swear to using Microsoft Notepad for web development, but honestly, that's just ridiculous these days.
Modern web developers have a vast set of tools at their disposals, and it would be folly not to utilize that. In this section, I'll give a short summary of the primary tools that were used to realize our start-up. Of course, people have different preferences, but with any luck, you will find some of these useful.
Making an architecture: Laravel
My main requirement of a framework is that it helps realize ideas without having to consider how the framework was designed much. This means that it's either modular or not trying to do too much off the bat.
I find that Laravel is the perfect trade-off between having all the features that you need, but also a flexibility that allows you to do whatever you want. If you want to use the built-in ORM, Eloquent, that's cool, but you could also go for something different, such as Doctrine – and there's probably a package for it, since there's a large community.
It should look decent: Bootstrap
Not an expert in styling things with CSS? Failed all your design classes? No problem. With the Bootstrap CSS/Javascript framework, you're already a good step along the way. It supplies you with a set of standard elements that you can construct your site from, and it will look okay. It's created from the mobile-first principle, so it'll even look good on all devices.
Colour schemes can be designed using convenient on-line, or you could even just use one of the many free themes available.
Basically, if you can't design, just use Bootstrap. Won't be awesome, but it will do.
Bringing it to all to life: Vue.js
The static web is dead to me. Having to do a page reload because you click a button is often unnecessary. Making a good reactive website has long been a tedious task, but help is here.
The extremely modular Vue.js framework goes a long way towards making it easy to create reactive web pages, without making too many architectural demands. Feel like dropping in a Vue.js feature on a page? No problem. It even has plug-ins for a lot of different things, such as drop-in Bootstrap components or making HTTP requests.
It's made javascript fun again. Go investigate!
Serving it to people: Nginx
Apache is too cumbersome, and the configuration format is too atomic for me.
NGINX is awesome. If you want excellent performance from your web server and fairly easy configuration, it's a good alternative. Hell, Google even made a set of configuration files for it that pretty much guarantees that your server will do alright. As an added bonus, it's also possible to use it as load balancer for all your web servers as soon as your start-up takes off.
Not convinced yet? Laravel uses it in its Homestead vagrant box, so you will likely run into it sooner or later.
Shoo, voyeurs: LetsEncrypt
Let me first clarify something: you should serve your site by HTTPS!
However, in order to do so, you need a valid SSL certificate, something that has been fairly expensive, historically. Don't feel like paying for SSL certificates? Look no further than the excellent LetsEncrypt service.
LetsEncrypt offers free SSL certificates, which you can request through the excellent command-line tool that they have created. It makes you wonder why we had to pay for these to begin with, if it's that easy I'm certainly never getting a certificate through anywhere else ever again.
Look what I'm doing: Ngrok
Sometimes, you want to show off your progress. This can be difficult, if you don't yet own a server which is exposed to the public. Perhaps you just don't want to put it up there yet. No matter what reason, it can be really useful to be able to allow external connections to your local development setup.
In order to make this easier, we used Ngrok. Ngrok makes it easy to set up a tunnel to your local environment, which you can then access by *domain*.ngrok.io.
Beats maintaining a development server any day.
Sublime Text
Yeah, you could code your application in Microsoft Notepad. But you could also use Sublime Text, which comes with a free unlimited trial! Sublime Text has all the features that a modern developer needs, and if it doesn't out of the box, it's extremely modular.
The Sublime Text repository has expansion modules for most common development tasks, which makes the life of a programmer much easier. That tedious, repetitive task you used to have to do? There's a module for that.
I've been through a lot of editors, but it's in Sublime Text that I feel really at home.
SourceTree
If you're going to make a large software project, you're going to need version control of some sort. I'd suggest that you use Git. But I wouldn't recommend that new users use the command line for everything.
The excellent SouceTree tool simplifies managing your Git repositories. You can still make errors, but it definitely makes everything more manageable for the novice user.
Of course, it's still a good idea to know what's going on behind the scenes. If you do end up using SourceTree, take a look at the commands it's making. It'll do you good when something goes wrong.
Services
You shouldn't do everything yourself. There are a lot of awesome services out there that can make your life easier.
Here follows an account of three services that helped make our start-up succeed.
Bitbucket
Don't feel like hosting your own Git repository? Can't be asked to back-up your things? Good thing there's a bunch of good free alternatives to doing so! We've been using Bitbucket, and we're quite happy with it.
It's a winning point that SourceTree has been developed with Bitbucket in mind, so it's really easy to get started when using this combination.
There's even a Bitbucket plug-in for Slack, which is able to notify users when there are new commits and such.
Digital Ocean
Your start-up will need to be hosted somewhere. If a dedicated server is too expensive for you, but a normal shared web-server doesn't give you the necessary freedom of configuration, a VPS server is a good alternative.
We have been using Digital Ocean for this purpose. They offer a set of reasonably priced "droplet" configurations, and their control panel is beyond awesome. Just pick an operating system when creating the droplet, and you're good to go. Need better specs? Just upgrade and reboot, and voila.
They even have a large collection of tutorials and guides for most server-related tasks.
Stripe
If you're going to sell something, you will probably need a payment provider. We have been using Stripe for this purpose. It makes handling a subscription service much easier than if you had to implement all aspects of it yourself.
It's super easy to use Stripe, and they even have pre-built, customizable payment forms that you can implement on your site.
On the server side, the Laravel Cashier module makes accepting payments via. the Stripe API fairly easy.
To date, we still haven't been dissatisfied with Stripe – I highly recommend it as payment provider for any start-up with something to sell.
So, there you have it. A summary of some of the tools that helped our start-up succeed. I hope that knowledge of these useful resources will help you succeed.
Feel free to drop by OllyGames.com and hit the games!