Thread Manager - Managing Social Media
Thread Manager a the web app I intend to use to schedule posts to social media sites and run basic analytics.
I’m starting from scratch as of January 2024, replacing a previous app I wrote to post exclusively to LinkedIn.
I intend to post about the process of building this app on Threads as I build it. The code for this app is on GitHub.
This is purely a hobby project. I have a lot of personal commitments and I’ll build this very slowly, as time allows.
Why build this?
In 2021, I was writing a lot on LinkedIn, but I was limited by LinkedIn’s post formatting being mostly text — no inline images, no code. To have images and code, I started writing more on my blog, but usually finished my posts in the middle of the night, and I wanted to schedule them to post the next morning. I also wanted to be able to post to multiple social media sites at once. I created a simple app to post to LinkedIn, Twitter and Mastodon, and it worked well enough for my needs.
Now, in 2024, I’m using Threads a lot more, and an API is probably going to be available in 2024. I want to be able to schedule my blog posts to post to Threads, and I also want to share my journey learning the Threads API.
Technology Choices
Since I work at Microsoft, I am more familiar with Azure than other cloud providers. And since I work in data science, I am more familiar with Python.
My intended technology stack is:
- Azure App Service to host the app
- Azure Cosmos DB to host the data
- Azure Functions for the scheduled job (using Python)
- Python Flask for the web app, with Bootstrap helping make the UI better
- Quarto for the blog posts
- GitHub Pages to hold the blog posts
Project steps
The list below shows the steps I am taking to build this app. I will update this list as I make progress.
- Create an Azure Web App with Authentication and Basic Authorization
- Create a user database in Cosmos DB and link it to authentication
- Create a user profile page
- Connect to the LinkedIn API
- Enable a basic text post to LinkedIn
There will be more steps, and I’ll add them as I go.