Metric | |
---|---|
Lines of code | |
Maintainability | |
Reliability | |
Security |
This project was born, more or less, two years ago.
I was teaching a C# Course in a High School, and I needed a "cool" project to sum up all the concepts I explained throughout the course.
Since (lucky or not) a Social Network is "cool by default", I decided to create a simple Instagram clone.
The guys attending the course appreciated the idea a lot, so I did my best to create a working web project that was also simple but with a significant set of features.
The original project was a .NET Framework 4.6.2 web application created using ASP.NET MVC 4.0 with Entity Framework 6.2 and SQL Server 2014 Express as backing store, and, since I had a lot of fun creating it, I decided to evolve it a little bit...
The project looked interesting, so I decided to use it as my preferred playground for testing new technologies and patterns. Today InstaLike is a web application built using some interesting stuff:
- Domain Driven Design.
- ASP.NET Core.
- CQRS Pattern.
- O/RM Based persistence
- Unit testing and integration testing.
- Unstructured data (images) storage both on-premises and on the cloud).
- Activity logging.
- Cloud-based image recognition using Azure Computer Vision.
- User registration.
- Sharing of pictures.
- Put "Likes" on shared pictures.
- Comments on shared pictures.
- Follow and unfollow users.
- Get notifications when other users interact with the content you shared.
- Pictures Auto-tagging.
- Cloud storage compatibility (e.g. Azure Blob Storage) for pictures.
To work with InstaLike source code, you need:
- ASP.NET Core SDK 3.1.
- Visual Studio 2019 or greater (the free Community Edition is enough), or the IDE you like.
- SQL Server 2014 Express or greater.
- Download the code.
- Install the dotnet.exe-based FluentMigrator Runner
dotnet tool install -g FluentMigrator.DotNet.Cli
- Build InstaLike.Database project
cd InstaLike.Database
dotnet build Instalike.Database.csproj
- Create the database using the provided script
cd bin\Debug\netstandard2.0\Scripts
sqlcmd -S (local) -E -i DatabaseDefinition.sql -v DatabaseName="InstaLike" StoragePath="<path where you want to store data files>"
- Run migrations to create database objects
dotnet fm migrate --processor SqlServer2014 --connection "Data Source=(local); Initial Catalog=InstaLike; Integrated Security=True" --tag SqlServerOnPrem --assembly Instalike.Database.dll up
- Build and run the solution
This project has been built using these awesome Open Source projects:
- ASP.NET Core
- CSharpFunctionalExtensions
- MediatR
- NHibernate
- FluentNHibernate
- FluentMigrator
- Xunit
- FluentAssertions
- Serilog
- Humanizer
Many thanks also to my friend and fellow worker Matteo for the graphic design. I gave him some rough stuff and he made it beautiful!