The Entrepreneur Forum | Financial Freedom | Starting a Business | Motivation | Money | Success
  • SPONSORED: GiganticWebsites.com: We Build Sites with THOUSANDS of Unique and Genuinely Useful Articles

    30% to 50% Fastlane-exclusive discounts on WordPress-powered websites with everything included: WordPress setup, design, keyword research, article creation and article publishing. Click HERE to claim.

Welcome to the only entrepreneur forum dedicated to building life-changing wealth.

Build a Fastlane business. Earn real financial freedom. Join free.

Join over 90,000 entrepreneurs who have rejected the paradigm of mediocrity and said "NO!" to underpaid jobs, ascetic frugality, and suffocating savings rituals— learn how to build a Fastlane business that pays both freedom and lifestyle affluence.

Free registration at the forum removes this block.

Choosing a technology stack...

Austin Ogre

Contributor
User Power
Value/Post Ratio
182%
Feb 2, 2017
17
31
54
Austin, TX
@maverick asked me a couple of great questions in my intro thread and I felt like they deserved a broader conversation so I've moved them here. Hopefully others will add their thoughts as well.
1- What tools/templates would you recommend using to minimize the amount of development work that is needed? I'm mainly interested in hearing what open source tech you generally use (e.g. AdminLTE for your admin area: AdminLTE 2 | Dashboard). The tech stack that you use is also interesting to know.
Thanks!

I've worked on 3 major SaaS start-ups and each of them used really different technology stacks.

Start-up 1: Primarily java & javascript front end, used an open source project for a large piece of core functionality which was written in PHP (open source project called Horde). Backend was a mix of everything but primarily C and java. We were early adopters of a number of toolsets and at one point ran the largest Puppet deployment in the world.

Start-up 2: Primarily a javascript front-end I think we were using a UI framework similar to Bootstrap (though I forget which one exactly) for look and feel. Backend was a mix of java, c# and a bunch of PowerShell.

Start-up 3: Mostly javascript front-end. Backend is a mix of C, Lua (which is a game dev language actually) and pretty much everything under the sun in at least small amounts.

So across these I guess java and javascript are pretty common. And that makes sense when you're developing a web based application. Lots of developers in that pool to choose from and outsourcing project work can be pretty straightforward/modular. I know there are lots of open source libraries we've used, but I don't have a great list. Some of those projects died a slow death and sometimes we tried a project and moved on to another if it didn't meet our needs.

I do like AdminLTE as a UI framework for reporting though. I was actually looking at it last fall for a personal project. For reporting internally we often use tools like Grafana and Kibana. Our logging and reporting needs are a bit crazy... I think we publicly stated we generated logs at a rate of 50GB/s in 2013 (it's uh... more now).

One thing I would point out is that as you're thinking about rendering logs/data to customers for reporting you need to think a lot about how the data is stored, when you can show aggregate data across all customers and when/how you need to display customer specific data. If you're tracking all the website visits in say Apache logs then the queries to pull out data specific to a customer can be a little tricky... more so if you want to allow them to drill down into individual visits (it's one thing to be slightly off in your query when you are reporting aggregates) but when you drill down to a specific log entry it damn well better be for the customer in question.

But the key is to make sure you're storing and collecting data first. Every login attempt for a user should be logged for example along with customer ID, username, origin IP, success or failure. Would it be nice to show in a UI? Yes, but the more critical point is to have the data. If you needed to you could run a SQL query to give that information to a customer. They might bitch that it's not in the UI, but at least you can get it.

Frameworks are good. Bootstrap, AdminLTE? Yep, highly recommend where they make sense. Where they don't as tools themselves they still suggest good design patterns which can be used/reused. When I did product management I really didn't focus on toolsets. I mocked up a basic UI, talked about the intended functionality, use cases and possible long term features I didn't want to box us out of in our initial design decisions. Then I sort of set the developers free and using agile development check pointed with them often to course correct, get their feedback on what an idiot I was and try to adapt based on their feedback. Fun stuff.

Not sure that exactly answered your question(s), but hopefully it's enough random babble to open a good discussion here on the topic.

Ogre
 
Dislike ads? Remove them and support the forum: Subscribe to Fastlane Insiders.
Last edited:

grindmode

Bronze Contributor
Speedway Pass
User Power
Value/Post Ratio
126%
Jan 21, 2017
125
157
Kansas City
@maverick asked me a couple of great questions in my intro thread and I felt like they deserved a broader conversation so I've moved them here. Hopefully others will add their thoughts as well.


I've worked on 3 major SaaS start-ups and each of them used really different technology stacks.

Start-up 1: Primarily java & javascript front end, used an open source project for a large piece of core functionality which was written in PHP (open source project called Horde). Backend was a mix of everything but primarily C and java. We were early adopters of a number of toolsets and at one point ran the largest Puppet deployment in the world.

Start-up 2: Primarily a javascript front-end I think we were using a UI framework similar to Bootstrap (though I forget which one exactly) for look and feel. Backend was a mix of java, c# and a bunch of PowerShell.

Start-up 3: Mostly javascript front-end. Backend is a mix of C, Lua (which is a game dev language actually) and pretty much everything under the sun in at least small amounts.

So across these I guess java and javascript are pretty common. And that makes sense when you're developing a web based application. Lots of developers in that pool to choose from and outsourcing project work can be pretty straightforward/modular. I know there are lots of open source libraries we've used, but I don't have a great list. Some of those projects died a slow death and sometimes we tried a project and moved on to another if it didn't meet our needs.

I do like AdminLTE as a UI framework for reporting though. I was actually looking at it last fall for a personal project. For reporting internally we often use tools like Grafana and Kibana. Our logging and reporting needs are a bit crazy... I think we publicly stated we generated logs at a rate of 50GB/s in 2013 (it's uh... more now).

One thing I would point out is that as you're thinking about rendering logs/data to customers for reporting you need to think a lot about how the data is stored, when you can show aggregate data across all customers and when/how you need to display customer specific data. If you're tracking all the website visits in say Apache logs then the queries to pull out data specific to a customer can be a little tricky... more so if you want to allow them to drill down into individual visits (it's one thing to be slightly off in your query when you are reporting aggregates) but when you drill down to a specific log entry it damn well better be for the customer in question.

But the key is to make sure you're storing and collecting data first. Every login attempt for a user should be logged for example along with customer ID, username, origin IP, success or failure. Would it be nice to show in a UI? Yes, but the more critical point is to have the data. If you needed to you could run a SQL query to give that information to a customer. They might bitch that it's not in the UI, but at least you can get it.

Frameworks are good. Bootstrap, AdminLTE? Yep, highly recommend where they make sense. Where they don't as tools themselves they still suggest good design patterns which can be used/reused. When I did product management I really didn't focus on toolsets. I mocked up a basic UI, talked about the intended functionality, use cases and possible long term features I didn't want to box us out of in our initial design decisions. Then I sort of set the developers free and using agile development check pointed with them often to course correct, get their feedback on what an idiot I was and try to adapt based on their feedback. Fun stuff.

Not sure that exactly answered your question(s), but hopefully it's enough random babble to open a good discussion here on the topic.

Ogre
This OP has a quality post (much still foreign language to myself)... If your new to programming/development in ANY field/specific items Linux is not MAINSTREAM which makes integration with Windows, Apple OS/iOS, Android, google's overall platform including tools/apps, etc. but I honestly still HATE programming/coding/anything behind the scenes computer related... I have learned in an extremely short amount of time not just basic Linux but very knowledgeable in Kali Linux (if you know anything about Kali it's brutal learning the basics let alone properly using all of it's tool's...) and learning that coding for Mac along with Android is very much almost identical to how Linux commands/language...

If your bootstrapped Linux is 99.9% OPEN SOURCE from distro's to program's that people have already created that will automate or help you/your company.
 

maverick

Aspice, officio fungeris sine spe honoris ampliori
Read Fastlane!
Read Unscripted!
Speedway Pass
User Power
Value/Post Ratio
228%
Oct 26, 2012
605
1,382
Thanks for your thoughts @Austin Ogre - much appreciated.

To make this even more valuable I will delve a little deeper.

From your examples I deduce that you're heavy into data and resources which differs somewhat from my core offerings. I like the example:

I mocked up a basic UI, talked about the intended functionality, use cases and possible long term features I didn't want to box us out of in our initial design decisions. Then I sort of set the developers free and using agile development check pointed with them often to course correct, get their feedback on what an idiot I was and try to adapt based on their feedback. Fun stuff.

However how do we translate this into a project brief? What I mean by that is: how can we put this together into a brief that we post on websites such as Upwork to find a developer to do the job. You need to atleast give the developer(s) some guidance as to what they should use. From my experience it saves a lot of time and money if I reference open source tech/frameworks that they can build on instead of building everything from scratch.

I generally outsource all of my development work to a selected number of devs I've worked with before but let's assume that we're starting afresh.

Do you have any other frameworks/tech that you have used previously (with success). I'm thinking of the most basic functionality that pretty much all SaaS will have such as:
- User management
- Payment management (i.e. how to handle subscriptions)
- Reporting externally - to customers (e.g. AdminLTE)
- Reporting internally - for yourself (e.g. Kissmetrics)

Thanks again.
 

Austin Ogre

Contributor
User Power
Value/Post Ratio
182%
Feb 2, 2017
17
31
54
Austin, TX
Thanks for your thoughts @Austin Ogre - much appreciated.

To make this even more valuable I will delve a little deeper.

From your examples I deduce that you're heavy into data and resources which differs somewhat from my core offerings. I like the example:



However how do we translate this into a project brief? What I mean by that is: how can we put this together into a brief that we post on websites such as Upwork to find a developer to do the job. You need to atleast give the developer(s) some guidance as to what they should use. From my experience it saves a lot of time and money if I reference open source tech/frameworks that they can build on instead of building everything from scratch.

I generally outsource all of my development work to a selected number of devs I've worked with before but let's assume that we're starting afresh.

Do you have any other frameworks/tech that you have used previously (with success). I'm thinking of the most basic functionality that pretty much all SaaS will have such as:
- User management
- Payment management (i.e. how to handle subscriptions)
- Reporting externally - to customers (e.g. AdminLTE)
- Reporting internally - for yourself (e.g. Kissmetrics)

Thanks again.

Good questions and I'm not sure I have a good answer. The user management needs of the SaaS solutions I've built have been pretty unique. There was no existing framework that really understood our concept of customer or seat for any of them unfortunately. There do appear to be some frameworks out there now but i haven't used any of them so I can't comment on their quality.

As for payment management. Subscription billing was a problem I was trying to retrofit/retrofix in one of our applications but then the business was spun off and I took that as an opportunity to go on an extended sabbatical and have no idea if they completed it. The current company has a subscription billing service for our self-service tier customers, but I don't know if we built it or plugged in someone's solution. I think it is probably (mostly) the latter, but I don't know how much business logic we handle for building the charges. So I'm less than helpful here I know...

Reporting externally... I did look at a lot of frameworks and I do like the AdminLTE framework best of everything I looked at. Knowing what data you want to report on can help you determine what to collect. You'll never have good enough reporting, I wish it weren't the case, but someone will always want a report you can't easily generate or that has no applicability to your broader customer base (building snowflake features is the surest path to a slow and painful death under an avalanche of technical debt).

Reporting internally. I've used tools... oh so many tools. At the moment I have a kibana and a grafana dashboard up looking at some internal metrics. I've used used splunk, written scripts, pulled things from salesforce. We measure so much ^%@# that knowing what to look and when becomes a challenge. Rarely have I used external tools explicitly for reporting... more often for monitoring (uptime and performance).

And yes I agree that with contract work, especially if you are starting fresh you'll likely need to specify a framework or provide a couple of possible frameworks and let the developers give you feedback on which one they'd prefer to use (and why). As the solution evolves the frameworks become pretty established and using a new framework or new tool becomes a product feature of its own from a management perspective because it needs to be rolled out, tested (monitors need to be written, devops needs to figure out how to manage it, and restore it).

I am not a very good developer, but I can hack around a little in a couple of languages. So I generally tend to prefer things written in javascript for the web. I'd run the other direction if someone wanted to build out a solution in php for a number of reasons.. but alas since WordPress is PHP I can't get away from it entirely. :)
 
Dislike ads? Remove them and support the forum: Subscribe to Fastlane Insiders.

QueueQueue

Contributor
Read Fastlane!
Read Unscripted!
User Power
Value/Post Ratio
153%
Oct 12, 2016
36
55
37
Ontario, Canada
Software Engineer here.

The technology stack is highly dependent on the requirements of the application.

  • Are you looking to get something out fast to test the market (but likely won't scale as well and will require a lot of refactoring if you start getting a lot of momentum)?
  • Are you looking for something that scales easily?
  • Does your application need to support both web and native mobile apps?
  • What language(s) and framework(s) are the developer you are working with most proficient in?
  • What limitations (if any) do you have in regards to hosting options. Certain back ends require more expensive hosting.
The list goes on. At the end of the day you're trading something for something else. There is a saying we often use in this industry and it is:
"Fast, Cheap, Quality. Choose two"

However, with that being said. I feel the best way to approach your technology stack in most cases for a new SaaS project is simply to fail fast. Building software that can scale and is properly implemented can take MANY TIMES as long as simply getting out something quickly to test a market. You could spend an extra 6 months or more just getting the back end architecture perfect and tweaking every minor detail in your interfaces, but what is the point if you launch with this perfect solution, only to find that you still are getting no customers despite the extra effort?

Here is an example:

Twitter
Twitter started with Ruby on Rails. RoR was popular at the time Twitter was created, and was known for being able to churn out software quickly because it had a lot of stuff built in that would automate writing code so that the developer could focus on getting functionality in and not be concerned with the more mundane stuff. The problem with this, is that it is almost always never the most scale friendly way to approach software. Over time, Twitter eventually had to scale back on the RoR implementation and transition their back-end to Scala (a back end gaining a lot of popularity due to its ability to scale to volume so well). They were able to test the market quickly, and then step back and re-engineer when they needed to. Facebook also did the same thing, but with PHP.

----

Nowadays, web development is becoming more Javascript heavy as the front end is doing more and more. There are lots of popular frameworks for this (Angular 1, Angular 2, React + Redux) that are being used extensively. For back ends, there are countless options, but I would opt for something quick such as PHP (with frameworks like Laravel), C# (which can be get development out quick AND be transitioned to being very scalable in the future), or Java (due to its having such a huge library of frameworks and support from developer communities).

There are a lot of trends in software development, some developers will look down on specific technology stacks because they aren't the "newest and greatest", but this position is silly. Regardless of the stack you're using, as far as your customers are concerned, they don't give a shit what stack you're using. As long as the page is responsive in a reasonable time frame, and your interfaces aren't garbage, it doesn't matter what is going on under the hood.
 

OAK

Contributor
User Power
Value/Post Ratio
153%
Mar 13, 2017
15
23
31
Phoenix
Take it from someone who took literally the fastest route to getting a job in software development...

I went to a bootcamp for 6 months and the stack we learned was the MEAN stack (MongoDB, Express/Node, and Angular)

The beauty of this stack is that you can create FULL websites and applications (even mobile due to cross-platfrom tools like Ionic and React Native) USING ONE SINGLE LANGUAGE...

JAVASCRIPT!

Before 2011 (aka when Node.js came out) this was not possible as Javascript had no backend (server). Now it is and has becoming more and more popular due the incredible speeds and runtime environment (very fast feedback loop for trying testing your code as opposed to Java and other languages)

If you are just trying to create websites I would recommend Javascript. I may be biased, but other languages see so heavy and massive to understand compared to Javascript which is light weight and, as stated before the only language you need to know to build full apps (you will need to learn it anyway for web browsers).

If you are going with software products, you may want to look into other strongly typed languages like Java. The only reason why I know Java, Ruby, Golang and tools like Jenkins/Docker is because I had to for my job.
 

Ravens_Shadow

THE TRUTH IS OUT THERE
FASTLANE INSIDER
EPIC CONTRIBUTOR
Read Fastlane!
Read Unscripted!
Summit Attendee
Speedway Pass
User Power
Value/Post Ratio
642%
Oct 2, 2012
1,247
8,009
Austin, TX
Thanks for your thoughts @Austin Ogre - much appreciated.

Do you have any other frameworks/tech that you have used previously (with success). I'm thinking of the most basic functionality that pretty much all SaaS will have such as:
- User management
- Payment management (i.e. how to handle subscriptions)
- Reporting externally - to customers (e.g. AdminLTE)
- Reporting internally - for yourself (e.g. Kissmetrics)

I Second this. I'm having a desktop software require a monthly subscription which is similar to adobe creative cloud. Really curious about how I'm going to manage user accounts. I've been searching for solutions.

However I can tell you how you could handle subscription management: SendOwl

I've been chatting with them quite a bit and they fit my needs. They specialize in managing subscriptions for digital products. They have an API that you could link to your front end user management. You need your own payment gateway (stripe) or paypal, but they manage all the other stuff for you.
 
Dislike ads? Remove them and support the forum: Subscribe to Fastlane Insiders.

Owner2Millions

Bronze Contributor
Read Fastlane!
Read Unscripted!
Speedway Pass
User Power
Value/Post Ratio
103%
Feb 21, 2017
144
148
Chicago
I agree with queue(lol I like your name by the way, nice play on words) that your stack really doesn't matter as long as it can handle your number of users. Even if it doesn't and you have to change it so what.....it's pretty common to switch back end architectures as your users grow or the project itself just grows. I personally love python as the backend language for web. It's not much you can choose from with Apple and Google when coding for their platforms. So just jump in and get started.

I like this thread a lot. Please keep us informed of your progress. All the way up to your first sale!


Sent from my iPhone using Tapatalk
 

trace987

New Contributor
User Power
Value/Post Ratio
42%
Sep 27, 2017
12
5
35
Austin, Texas
Hands up for Javascript. I also think that it's been widely used and continue to grow. Of course we shouldn't forget about others (PHP, Java) but seriously, it is really light weight and easy to do front end and do back end with node.js.
 

Readerly

Yes and
Read Fastlane!
Read Unscripted!
Speedway Pass
User Power
Value/Post Ratio
185%
Sep 25, 2017
179
331
Portland, Oregon
Another hands up for Node.js. This past year I taught myself how to do web development. I wasn't exactly starting from scratch, though. I have a background in network engineering. I learned how to code a few years back using a great hybrid mobile app framework called LiveCode. It has a scripting language. With this exposure to the fundamentals of programming (variables, functions, loops, conditionals, etc.), I took Colt Steele's Web Development bootcamp on Udemy for $10 bucks. A ridiculous price for what was effictively a $10,000 bootcamp for the properly motivated. With that foundation, I built a learning management system from scratch in about six months using: Node.js, MySQL, jQuery, Cloud9, Bootstrap, Heroku, and LiveCode (for the iOS & Android apps that are part of the LMS). Now I'm circling back to dive deeper into Node.js design patterns. I'm also teaching myself React & Redux, which is turning out to be fairly straight-forward. As I'm sure all the developers here can attest, once you grasp the fundamentals of programming, it's just a matter of putting in the effort to learn new frameworks.
 
Dislike ads? Remove them and support the forum: Subscribe to Fastlane Insiders.

Post New Topic

Please SEARCH before posting.
Please select the BEST category.

Post new topic

Guest post submissions offered HERE.

Latest Posts

New Topics

Fastlane Insiders

View the forum AD FREE.
Private, unindexed content
Detailed process/execution threads
Ideas needing execution, more!

Join Fastlane Insiders.

Top