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!

  • redcalcium@lemmy.institute
    link
    fedilink
    arrow-up
    9
    arrow-down
    1
    ·
    4 months 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
    link
    fedilink
    arrow-up
    7
    arrow-down
    3
    ·
    edit-2
    4 months ago

    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
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      4 months ago

      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
        link
        fedilink
        arrow-up
        2
        arrow-down
        1
        ·
        4 months 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
    link
    fedilink
    English
    arrow-up
    3
    ·
    edit-2
    4 months ago

    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
      link
      fedilink
      arrow-up
      1
      ·
      4 months 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…

      • agilob@programming.dev
        link
        fedilink
        English
        arrow-up
        1
        ·
        4 months ago

        Just not in Java…

        I think you’re biased against Java. Amazon was started in C/C++ and Java J2EE during times when to configure a webserver required writing like 300 lines of XML just to handle cookies, browser cache and a login page. Until recently BMW had their own JRE implementation. It’s not a secret that simcards, including these in Tesla cars run JavaCard too, even government issues sim cards in EU have to run Java Card, not C++. Everything was always fine with Java until ECMA Script appeared and made people iterate on software versions faster. New programming languages and team organisation methodologies left some programming languages in the dark, but this included C# too. All are quickly catching up. If Java was so bad, it wouldn’t be here with us today, like Perl.

  • ericjmorey@programming.dev
    link
    fedilink
    arrow-up
    3
    ·
    4 months 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.

  • Neo@lemmy.hacktheplanet.be
    link
    fedilink
    arrow-up
    1
    ·
    4 months 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.