DEV Community

Cover image for SoSa - Foundations (My First Sprint)
James Mahy
James Mahy

Posted on

SoSa - Foundations (My First Sprint)

If you’re an entrepreneur you’ll probably be in a similar boat to me. Trying to do a million jobs on a tiny budget.

Great for your startup, not so much for fortnightly updates! So I’ll try to keep these posts structured and a little ridiculous.

There will be a combination of tech stuff, marketing stuff and general nonsense.

Previously on my descent into madness: SoSa - Precursor


I'm James, i'm 34 from the UK and i'm a developer.
In 2014, I launched a social network for the imgur community called SoSa (originally Social Savanna)!

It grew too quickly, i had major health and financial concerns so in 2018 I had to put on pause.

Now, my life is back on track, I have enough savings to see me through and over the next 6 months I'm rebuilding it with that original communities help!

If you're into Product development points 1, 2 and 3 are your thing, if you're into Community / Marketing / SEO then 3 and 4 should give you a taste.
Remember this is my first 2 weeks of working on this, so you will continue to see everything evolving.

What did James do between 24th December and 3rd of January???

A shit load apparently, 24 stories and 34 points!
What is a story? And a point? Where am I? Who stole my socks?

All great questions, except the socks question I have no idea!

Stories usually represent what you as a user would want. EG:

  • “As a user I would like to see news on SoSa”
  • “As a user I need to be able to talk in a chat room”

Because I’m a lone ranger on this project and doing the work of 4 or 5 people, tasks are essentially stories.

Points let me work out how difficult something is. You can use a range of different numbers, some people use 1–10, some people follow a Fibonacci sequence, others just fling shit at a wall and see what sticks.

To keep it simple, I’ve gone with 1–5.
1 is really easy, 5 is really difficult.

These let me know how much I’ve achieved, but also how much I can achieve. Helps me maintain velocity.

Great James, but what did you actually do?

1. The blog and homepage are now fast and mobile friendly!

Before I start working on SoSa, I need a solid, fast and responsive homepage so I can share easily what it is and how other people get involved!

It's a sales page essentially, tells anyone who lands on it the basics and gives them an opportunity to get involved in it's development.

To speed up development, I’ve used something called Bootstrap.

Side By Side Screenshot
Blog Homepage Screenshot
Blog Post Screenshot

James, why are we talking about Boots now? I thought this was about SoSa!

Ok ok, I feel like we’ve gotten off track. If you imagine a website is a house, Bootstrap is a cool little piece of software that provides me scaffolding to build my house in.

It’s a little more complicated than that, and the scaffolding is really on wheels and the walls are attached with rubber. But I don’t want to confuse things.

If you want to poke around the code, you can find the code on our Github :)

2. Development has started... kind of...

Chat was always the biggest part of the original platform, with huge improvements and lot’s more features coming in the SoSa 2.0 version of it!

I’m starting with the right foundations, getting the core code, pipelines and testing in place early.
It’s really simple but this is a huge step towards getting chat on people's phones / computers and creating a scalable server that will run thousands of members.

If you're interested in a little tech demo, I made a youtube video!

3. Nerd Ramble

OK, so I do want to share some technical stuff in these updates, so if you’re not into that then skip down to Section #4

One of my main goals for SoSa 2.0 is to make it really lean, but also super accessible to other developers.

I want it to be reallllly easy to test and deploy but I want to keep the number of moving parts to a minimum.

Everything i’m building — i’m building with that goal in mind.

Everything a user interacts with will either be using an API, Socket or coded using Javascript, Typescript or something that can translate from those.

ChatClient Class

Starting with the ChatClient class, you can see that the constructor accepts two arguments. EventHandler and MessageHandler.

Why is that important?

Well that means that either a test framework or another developer can inject platform and context specific code. To the overall framework will fundamentally work the same but a developer could decide to render messages slightly differently, or respond to a special event from the socket server.


EventHandler a class derived from ChatEventHandler class. ChatEventHandler essentially allows the client to listen to basic events and do things when they happen.

The default class will listen to the events connect, message, success, error, disconnect and has very basic handling of each.

This will allow developers to extend

  • What kind of events the client can listen for (if there are platform specific ones)
  • Add additional platform specific events.


MessageHandler A class derived from the ChatMessageHandler class which is what will render the message on the designated platform.
The default handler just output’s to the debug logger because that will work on all platforms.

I would expect each platform to have it’s own implementation.

This means that our client code can be universal and if developers want to make their own unique apps based off of it, they can whilst still working flawlessly within the SoSa Eco-system.

4. LinkedIn, Github and Patreon!

Visibility is really hard, especially if you’re trying to make an awesome social network that’s really easy, fun and friendly for people to make new friends and socialise.

We’re already on Facebook, Twitter, Steam and Youtube but I want to build a community of communities, which means we need visibility on as many platforms as it makes sense.

This sprint, I started working on our LinkedIn page and it’s slowly but surely growing. If you have Linkedin! Please follow us!

LinkedIn Page Stats

I also opened up our GitHub and i’m trying to make as much of our code open source as possible so that other members can

  • Have a play with what we’re developing
  • Help us find bugs and issues
  • Give back to the community

Github Page

Not everything is available at the moment, there are still some cool parts of SoSa i’m keeping under wraps so that it’s a surprise for the original community when we relaunch.

Once we’re growing again and everything is in a good place, I’ll make most of our backend stuff available too.

Until that point, it will only be front end bits, bots and specialist tools I build (For example a clone and possibly a documentation system).

5. SEO Is Hard!

I might have cocked up a few times during the last two weeks on this front.

  • Domain Authority: 11 (up from 9),
  • Page Rank: 18 (up from 13)

Firstly, the previous owner of was very naughty and employed Black Hat SEO techniques on the domain. So right now our spam score is “52%” and we can’t even post a link to Facebook 😢

Facebook being mean :(

I have contacted Facebook about it and they’ve said they won’t tell me why they’re blocking it but have a hunch it’s because of a lack of content on the site (something i’m working to rectify)

Next up, I’ve been buying a few domains over the last few months for specific “SoSa” services current and present (such as and
One such domain was And the previous owner once again has been very naughty!

SEO Being Mean!

So I have this little gem with a 75% spam score to deal with! 🙄

With that said, I have made a lot of progress especially in migrating old links, getting some people writing about us, moving the blog over to and being active sharing and posting about what i'm doing.

Stats improving quickly!

I also may have made a few mistakes in my blog move and accidentally caused 400+ redirect issues 😩.

Look. Let's not play the blame game here!

Last but not least, I’ve seen traffic ramp right up since I started working on things, with an average of 500 unique visitors a day across the domain.

Traffic since I started working on things

6. What about James?

  • I know, I know. All work and no play makes James a dull boy!
  • I’ve done a few things actually!
  • Spent on average 1 hour a day in the gym, often 2.
  • I celebrated Christmas with Yena!
  • Saw a few friends and family!
  • Broke my washing machine…
  • Begged Mum to wash my washing… i’m 34…
  • Helped clean out my gramps house
  • Played some computer games
  • Binge watched Lost in Space Season 1 and 2!
  • Binge watch Final Space Season 1
  • Cried
  • Oh! And filled in my Gratitude journal!

I hope you enjoyed my post and that there was something interesting there for everyone. If you've got any questions about anything just ask below or send me a DM :)

Top comments (0)