Nanogram is made for the privacy conscious enthusiast who wants total control of their data. Create a small scale private social media platform for family and friends.

The onion service and web server are hosted directly on your phone via termux.

User access can be granted by generating a magic invite link in the server manger. These are one time use links that allow registration to the service.

Application Demo here

Install Demo here

Source code here

  • Helix 🧬@feddit.org
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    8 hours ago

    Pretty cool demonstration on how streamlined a social network can be. It doesn’t look like much, but then again, it’s not a lot of code and simple enough to have a small attack surface.

    I can see this being a good candidate for teaching people how social networks work. I don’t think I’d use it with a friend group when other applications exist (see: network effect) but imagine the whole internet is down and you find a mirror of the python libraries used in the rubble.

    Could be used off-grid, for groups of informants to a journalist or in disaster scenarios aswell. Looking forward to a proper release :)

    • hereforawhile@lemmy.mlOP
      link
      fedilink
      arrow-up
      5
      ·
      11 hours ago

      It probably can run on a standalone machine but this was made and tested specifically to run off Android to be more accessible. I may not always have a computer with me but I probably am carrying my phone.

      So far in testing I am getting stable results even hosting on a cellular connection.

    • utopiah@lemmy.ml
      link
      fedilink
      arrow-up
      5
      ·
      11 hours ago

      Resistance to power outage? Ins’t a phone just a server without a keyboard and with an integrated UPS? /s

      • sqgl@sh.itjust.works
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        11 hours ago

        How much procesing could it handle though? If it is only a handful of friends then what makes it better than Signal?

        Also, cheap second hand laptops are a thing.

        I want to believe but I wonder if there is a practical use beyond “this would be cool” (and I do think it is).

        • utopiah@lemmy.ml
          link
          fedilink
          arrow-up
          3
          ·
          11 hours ago

          much procesing could it handle though? If it is only a handful of friends then what makes it better than Signal?

          I don’t actually know the project but I think your mindset here is (and correct me if I’m wrong) “Does it scale?” whereas the mindset of this project, based on the name itself and the “small scale” in the description, is “no, it does not scale and that’s A-OK”.

          • hereforawhile@lemmy.mlOP
            link
            fedilink
            arrow-up
            5
            ·
            10 hours ago

            The server backbone gunicorn is set with 2 workers and 8 threads ( this can be modified to more or less )

            But it should handle around 15 - 20 simultaneous connections smoothly. Now, if everyone is uploading all at once would definitely make it sweat.

            Once the server recieves the photo is compresses is down to 100-200kb so all retrievals are pretty light weight.

            Pagination really lightens the load as well. By limiting it to 10 photos per page, the server only needs to send about 1.5 mb - 2.0mb to load in a whole page of photos.

            • Helix 🧬@feddit.org
              link
              fedilink
              English
              arrow-up
              2
              ·
              8 hours ago

              You could also generate thumbnails with much smaller sizes and only load hi-res images on click. Did you consider using more JPEG or another algorithm?

              • hereforawhile@lemmy.mlOP
                link
                fedilink
                arrow-up
                2
                ·
                edit-2
                5 hours ago

                This is only possible because of the sandbox of the termux app. Unfortunately iOS has no comparable alternative to termux so it will likely never happen.

                In fact, it would even be pretty difficult to develop this into a standalone app on either platform with the way application review is. There is alot of unneeded fluff that would need to be added to be compliant with policies. A self hosted service like this goes against app store policies and google play policies in a few ways.

                So while IOS users can easily access the application on a onion browser, they won’t be able to host their own instance.

            • utopiah@lemmy.ml
              link
              fedilink
              arrow-up
              1
              ·
              9 hours ago

              Thanks for sharing and the clarifications. I do think both the philosophy behind this and the technological choices are right but it’s also true that “How many people?” can it handle is important for people who want to actually try and onboard others. It’s one thing to try alone but as long as we ask others to join, knowing what the limits are makes everybody more understanding.

            • sqgl@sh.itjust.works
              link
              fedilink
              arrow-up
              1
              ·
              10 hours ago

              Sounds good. I would love to get an activist group I run off Facebook. There are hundreds of members but traffic is less than what you describe.

              The problem for me is that most of the members are technically illiterate so my next question is: how sophisticated do the clients need to be?

              • hereforawhile@lemmy.mlOP
                link
                fedilink
                arrow-up
                1
                ·
                9 hours ago

                As far as literacy, all the client needs is a Tor browser and a invite link generated by the server operator.

                For Android just use the official Tor browser

                For Iphone, TOR recommends this app. https://onionbrowser.com/.

                I would love to see how far I can push a single instance with hundreds of users but realistically I think this is probably best suited for a circle of close friends and family.

    • hereforawhile@lemmy.mlOP
      link
      fedilink
      arrow-up
      13
      ·
      edit-2
      1 day ago

      It’s hosted as a onion service on the darknet.

      I don’t really like the term darknet though…it’s really just a free accessable network stack.

      I guess in this context it is underground because it’s a decentralized self hosted private service that doesn’t need anything but a internet connection. (And Tor)

      • Helix 🧬@feddit.org
        link
        fedilink
        English
        arrow-up
        4
        ·
        edit-2
        15 hours ago

        This sentence shows me I shouldn’t trust what you upload yet. Usually software developers put everything on a repository which they can then clean up later if a history rewrite is needed.

        • hereforawhile@lemmy.mlOP
          link
          fedilink
          arrow-up
          4
          ·
          11 hours ago

          It’s just as reviewable on the paste as it is on a code repo.

          Its more private for me to share as a paste. I don’t really want to tie my lemmy account to my repo identity.

          • Helix 🧬@feddit.org
            link
            fedilink
            English
            arrow-up
            1
            ·
            9 hours ago

            I didn’t question the reviewability of your code, but best practices regarding software development. I don’t mistrust the safety of your code, but the quality of its development process.

            You can simply create another account with your Lemmy username to publish your code in a repository.

            It’s fine if you have a local or private git repository and publish via pastebin, but you didn’t write that’s the case.