Looking at listing websites such as real estate listings etc, and I'm trying to think of the most efficient way to do this. Granted, 'most efficient' can mean the quickest to launch, the most efficient code... but if you were to create a listing website today, how would you do so - and what's your motive? Simply a WP instance with a listing plugin? Or something from scratch? What CMSs, if any, would you recommend?
I've got two purposes here - I'd like to learn new things eg programming languages and approaches, and I'd like to create a listing site in the future. Launching asap is not my primary motivation here.
Thanks all, look forward to your thoughts!
The fastest tech stack is the one you already know.
This.
Agree. You mention WP, if you already know it, look for the best listing plugin and go!
On the other hand you say you want to learn new things, and here the sky is the limit 😄
You should check out Sharetribe. It's made to create a Shared Economy (like Airbnb) but you can easily set it so only the admin can create listings.
+1 for sharetribe and have extensive experience with their hosted and new Flex platform. I've done a few vids on Sharetribe.
Yoroomie! Your story on starting studiotime was my inspiration for starting the projects I'm working on currently. Thank you!
Awesome! 🙏Def let me know if you ever have any questions or need help with Sharetribe and/or your project 👊
What would be the best way to contact you with questions?
mawilliams1215@gmail.com
Wow thank you! I'll definitely reach out to you in the near future!
It sounds like you're asking about backend more than front-end and that you're going to be serving mostly static content right?
In the web world, most servers should be setup and configured to cache the HTML, CSS, and static assets so that the backend code doesn't have to compile or render something on every response. So really, the backend of all of this doesn't really matter. Dynamic content is what adds complexity to your tech stack (which I don't think you'll have). For your use case, pick something that you like and has the flexibility to let you do what you want. You could go as simple as something like Wordpress with a listing plugin, or build something entirely on your own using something like Node.
Don't get caught up in over engineering a solution.
Thanks Kyle! Really good point, and appreciate you articulating the q (better than me). Yep, definitely static content, and probably a back-end solution is what I'm looking for. From my POV, understanding the range of options will help with my understanding/learning, more than anything TBH! But completely agree - would hate to put time into something, with no validation.
If your goal is to become great at being a backend web developer, I would venture out to a widely used backend framework such as PHP's Laravel, Ruby on Rails, or Python's Django that will force you to create something that's a little more "from scratch". They're opinionated and force you to use Object Oriented design patterns that get you familiar with things like Dependency Injection. If you'd still consider yourself to be a beginner, Wordpress is a good starting point though. Node, however, is terrible for those with little to no experience as it's an open canvas and doesn't offer much guidance on how to structure projects.
There are hundreds of tech stacks to choose from. Stick with 1 language or stack and learn it well and that skillset will transfer to other languages. You don't want to be a jack of all trades and master of none. The money is in specialization.
I think the fastest and most efficient way to launch (with NO code at all actually) is by using directly a Google Sheet containing your list and then using Sheet2Site: https://www.sheet2site.com/
I saw this launching on PH just a few days ago.
I'd think that building a frontend with a bootstrap template and using a DBaaS like firebase would get you up and running fairly quickly and then you'd only have to focus on a single codebase.
If you have any questions about listing sites let me know I work for www.circlepix.com a real estate marketing company and we build listing sites.
I recommend django for the sole cause of it coming with an admin panel and user permissions. Would save you loads time in developing the forms to add listings.
I agree. This is a perfect application for Django. Especially as @juzzo mentioned that it is a learning project, this is a beginner friendly app that Django would excel at.
I wonder if there are some front end templates that one could use as an initial design. Have you seen any?
You can use any template. Bootstrap [1] is probably the easiest to get started with.
[1] https://getbootstrap.com/
Let's take a look at all the possible choices.
WP is great if you're looking to get things up and running quickly. It has good admin dashboard and make an editor life easier. That being said, I really dislike WP, way to clunky for a simple site, and way too frustrating to extend to anything beyond serving content. Sometimes I still have to recommend it for my friend's project though. I haven't found any thing else that's as easy to manage. Sure if you're working alone, you can use anything. You can put content in a Markdown file, push it and call it a day. But if you're working with non-tech teammates, WP does solve a lot of problems.
Now if you really want to learn something new and roll out your own solution, here's some suggestions.
Do you want to run a server? If not, use a static site generator: Jekyll (Ruby), Metalsmith (Js), Hugo (Go), Gatsby (Js), etc... Pros are: simple, easy to scale, super cheap to maintain. You can host it for free on GithubPages, Netlify, or AWS S3; and use a CDN with it. Cons is content management. Most of the time, you'll be working with Markdown. Netlify does offer a simple CMS to work with Markdown, but it leaves a lot to be desired.
There's also a hybrid solution, that is to use a headless CMS service with your static site. In my case, I use Contentful + Gatsby + Netlify. Contentful tells Netlify when there's new content; Netlify then tells Gatsby to rebuild. This is what they call the JAMstack. Now you don't have to rely on only Markdown files for data anymore. You can have complex data model and association. If you ever need to do some kind of computation, you can use AWS Lambda or Cloud Function (Netlify now has built in integration with Lambda).
There's a risk with this approach though. As we rely on another party, it would be really painful if they ever shut down, or have some kind of breaking change.
Now what if you want to have a server and more control over the functionalities? Well any MVC framework will do. Listing site sounds like a CRUD app. Rails or Django can perfectly handle it. They are opinionated frameworks. Quick development time, pleasant developer experience.
Nodejs is on the rise, if you want to learn and use it, that's ok. But in my opinion, it's a little bit more complicated and only really shine on app that has lots of events firing (user interactions for example). For CRUD, not a really good choice. Ghost is a CMS solution that built on Node. I don't have experience with it but it does look really promising.
I build mine with Php (codeigniter) + Mysql + jQuery
I think you should use whatever you are comfortable with.
Wordpress with a simple Bootstrap based theme could be an excellent choice.
I recently stumbled upon https://www.sheet2site.com where you can create websites using spreadsheets. I haven't tried it myself but it seems like an interesting choice.
You could use haproxy with a backend on heroku for anything that needs server side rendering, and a backend on something like https://anvil.works/ for everything else.
If you really want to learn a new approach and aren't overly concerned with development speed, try something with a completely different paradigm like Scala with ScalaJS. You'll learn some functional programming and it will make you a significantly better developer.
That being said, it's going to be painful and frustrating at first. You have to learn really different approaches from what you are used to coming from a language like python or Ruby. But learning these languages can open up a whole new world that will let you tackle other kinds of problems. For example, with Scala you can get into big data stuff with Spark.
If you're looking to build something quickly and validate an idea, go with what you know. If you want to improve your dev skills, I think building a side project is the best way to learn a new language.
Or just use a service like brilliantdirectories dot com
Easy, but costs $.
If it's just a simple listing site your best bet might be to use a static site generator such as GatsbyJS and a back-end like Contenful. Put it on Netlify and you'll have a super fast site. It seems things are moving this way if you don't need a Database or any kind of complex interactions on the front-end.