Project Planning
First of all I need to define the features that my platform will have, after a lot of thinking I came up with this:
- Register
- Login
- Profile
- Ideas
- Filter
- Apply for an idea
- Approve/reprove an application
- Chat
- Tasks
- Invite to my idea
- Privacy control
- Like an idea
- Message board
Some of this features will be free for life, others will be available only on the premium version, this is one way that I thought about to monetize this platform.
With the features defined, now I created a mind map of the platform:
Well that is define, so now I created all the tasks for each feature.
Technology
For this project I decide to use a technology that I never used before, that is Docker (https://www.docker.com/) containers and for the Architecture I will use Microservices (https://microservices.io/).
For that I first divide my project into microservices and I came up with the following:
- User
- Authentication
- Ideas
- Chat
- Tasks
- Message Board
So I will have 6 microservices running on docker containers and a API Gateway, that will redirect the requests for the right services.
I was struggling to define what I will use for the backend, I was choosing between .NET 6 with SQL Server, .NET 6 with MongoDB and Nodejs with MongoDB. Since my background is more of .NET, I decide to use the first options .NET 6 and SQL Server database, because I never used .NET 6 for a project and I want to try Dapper to make the database access. But I will probably test the MongoDB to see performance wise what is the best option.
For the frontend was already decided that I will use Vue.
I think all the steps to start programing is almost done. I will now work on the solution on Visual Studio.