An application that stores links.
View Demo »
Explore the docs
·
Report Bug
·
Request Feature
Table of Contents
A quasi-social-media application to store and share links. This project started out as a basic console application but have evolved a lot during the years. Recently discovered that there is already a web app (not created by me) for this idea named Snack.xyz. For the entities and database design, please refer to the drawio document.
Application
Directory | Description | |
---|---|---|
1. | Linker.Common | Library that includes commonly shared codes across other projects |
2. | Linker.ConsoleUI | The very first version of the application. Uses CSV as the backing store and has limited features |
3. | Linker.Core | Old library that contains the models and interfaces used across the codebase |
4. | Linker.Core.V2 | Latest library that contains the models and interfaces with the updated design decision |
5. | Linker.Data | The integration layer between the application and data sources such as database |
6. | Linker.Database | The project that stores all the TSQL definitions such as tables and stored procedures for the database |
7. | Linker.Debugger | A console for debugging codes |
8. | Linker.GraphQL | The client with GraphQL. Working in progress. |
9. | Linker.GrpcServer | An experimental client with gRPC. Working in progress. |
10. | Linker.Mvc | The main client for the application. Working in progress. |
11. | Linker.Preprocess | A small tool to collect minimal links |
12. | Linker.WebApi | A HTTP client for the app |
13. | Linker.WebJob | A cron-powered background service that housekeep the records |
14. | Linker.Wpf | A GUI client for the app. Working in progress. |
Tests
Directory | Description | |
---|---|---|
1. | Linker.Common.UnitTests | Unit tests for Linker.Common |
2. | Linker.ConsoleUI.UnitTests | Unit tests for Linker.ConsoleUI |
3. | Linker.Mvc.UnitTests | Unit tests for Linker.Mvc . Uses SpecFlow for BDD styled tests. |
4. | Linker.TestCore | Library that contains utilities for unit test projects |
5. | Linker.WebApi.IntegrationTests | Integration tests for Linker.WebApi (Have not set up yet). |
6. | Linker.WebApi.UnitTests | Unit tests for Linker.WebApi |
The technologies and tools used within this project.
- .NET Core
- .NET MVC
- Pnpm
- TailwindCSS
- JavaScript
- jQuery
- TSQL/SQL Server
- SignalR
- Powershell
- xUnit
- SpecFlow
The list of tools that is used when development.
- Visual Studio
- npm
npm install npm@latest -g
- Pnpm
npm i -g pnpm
- Git
- .NET CLI
To run this template project in your local for personal use or contribution, simply perform the following.
- Clone the repo
git clone https://github.com/data-miner00/Linker.git
- Install Node dependencies
pnpm i
- Restore Nuget
dotnet restore
- Build projects
dotnet build
- Restore database (steps coming soon..)
- Run Mvc
dotnet run --project src/Linker.Mvc/Linker.Mvc.csproj
- Add OAuth/OIDC/Okta authentication
- Add QRCode
- Use RabbitMQ
- Use Grafana for telemetry tracking
- Configure code coverage with report generator
- Create Mobile App
- Sending Email
- Working SpecFlow unit tests
- Working integration tests
- Add component tests
- Change GitHub Workflows to use Azure Pipelines
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the WTFPL License. See LICENSE
for more information.
List of resources that are helpful and would like to give credit to.