this post was submitted on 29 Feb 2024
21 points (88.9% liked)

Programming

21593 readers
309 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS
 

I'm looking to build a social platform focused on sharing multimedia content like images, GIFs, and videos, with collaborative curation features like tagging, collections, searching, downloading, etc.

Essentially the goal is to make it really easy to post, organize, discover, and collect multimedia content. I envision a mix between booru-style imageboards, Internet Archive and Lemmy.

I'm looking to use this as a learning project to get more hands-on fullstack and devops experience.

What would you all recommend technology-wise for someone starting out? I have some Python and web dev basics down, but not enough to feel comfortable just jumping into a big project.

Ideally I'd like something with good documentation/tutorials and an active community I can turn to when stuck.

Would love any suggestions on stacks to look into or good starter tutorials/books related to making the jump to a large project like this.

Thanks for any advice!

top 10 comments
sorted by: hot top controversial new old
[–] redcalcium@lemmy.institute 9 points 1 year ago

In my opinion, you should try a bunch of programming language and frameworks so you can judge yourself which one you really like. Building a bunch of small side projects to get a feel of those languages and frameworks is better than building one big project at this learning stage. After you have settled with one or two programming languages and frameworks you like, then you can proceed with complex side projects to gain deeper experience with the language and framework of your choosing.

My preferred stack to give you some inspiration:

  • Backend: Django with Django Rest Framework. Reason: there are faster python backend framework out there, but nothing beat django yet when you need to build something quick.
  • Frontend: Next.js is getting really good these days.
  • Database: Postgres. Very easy to setup and left alone. Even without tuning, it works just fine.
  • Task Queue: Learning how to use a task queue is essential. I use Celery with Redis backend for small projects or RabbitMQ backend for larger projects.
  • Docker: learn how package your project into a docker image you can deploy in various cloud services
  • Infra: I deploy my side projects to a bare metal server running RKE2. Having those projects as docker images with kubernetes config makes it really easy to migrate them to a new servers or cloud providers.
[–] MajorHavoc@programming.dev 5 points 1 year ago* (last edited 1 year ago) (1 children)

The framework, frankly, doesn't matter. Use what you can find good help documents for and examples. Statistically, that'll be Python or JavaScript. But use what works for you.

The big challenge you're going to run into is that I'm not going to create yet another login account to use your site, and no one else is either. To solve that, you'll need activity pub.

So while you're picking tools, frameworks and libraries, use whatever is working for you, but do a quick check that it supports or can be made to support ActivityPub.

Edit: This post brought to your server by - you guessed it - ActivityPub. ActivityPub: Like it or love it, you're hearing about it through ActivityPub.

[–] ericjmorey@programming.dev 3 points 1 year ago* (last edited 1 year ago) (1 children)

Sign in with Google/Facebook/etc. bypasses the problem that ActivityPub isn't all that popular (this may change with Threads but it's unclear how that will play out). But I also think you're overstating the hesitation most people have in creating an account for a service. Also, being a hobby project, it doesn't necessarily need to be or desired to be popular right away. It doesn't need to have all the features right away. It doesn't have to be built in one try or architected perfectly.

[–] MajorHavoc@programming.dev 1 points 1 year ago

Sign in with Google/Facebook/etc.

Those are also good options. It used to be that only the Twitter SSO wasn't a huge pain in the ass. I suspect that went away during Twitter's "why do we have all these microservices?" era.

But I also think you're overstating the hesitation most people have in creating an account for a service.

I'm really not. The majority of new account creation results in massive amounts of spam.

I had to add SSO auth to my hobby project before I got my first user, and I got my first user shortly after.

Also, being a hobby project, it doesn't necessarily need to be or desired to be popular right away.

Agreed for most hobby projects. But this one appears, to my read, to be banking on user participation.

[–] agilob@programming.dev 3 points 1 year ago* (last edited 1 year ago) (1 children)

There are two schools:

  1. the best stack is the one you know best
  2. the best stack is the one designed for the job

Remember that Google was written in Python and Java. Facebook in PHP. iOS in Objective-C. GitHub in Ruby on Rails.

[–] ____@infosec.pub 1 points 1 year ago

Appreciate you pointing out those examples - while one could argue errors in judgement, going with what one knows allows for getting stuff done NOW.

Have to say, FB and G examples resonate most with me because while Java is hardly “rapid,” given a well-defined objective I can bang out PHP or Python to accomplish it quickly, and then iterate efficiently.

That was doable long before the idea of iterating quickly / failing big / etc entered the public consciousness. Just not in Java…

[–] ericjmorey@programming.dev 3 points 1 year ago

Get started, make mistakes so you can learn. The best stack is the one you use to build things with. If you want to learn a new tool, use it. Otherwise, use what you're familiar with.

[–] Lmaydev@programming.dev 1 points 1 year ago

No language / framework is going to give you a massive advantage here.

Either stick to what you know best or try out some different ones and see what you like.

My personal favourite is aspnetcore and c#. It provides pretty much everything you need out of the box and has a very large ecosystem for connecting with external services.

[–] neo@lemmy.hacktheplanet.be 1 points 1 year ago

I recommend Ruby on Rails. I am biased with 17 years of professional experience, but it has batteries included, end to end everything you need to build, test and deploy a modern web application. In my opinion Ruby is the most pleasant language to read and write. But try to compare many stacks and see what you like best.

[–] Album@lemmy.ca -1 points 1 year ago