Skip to content

An application that collects links (work in progress)

License

Notifications You must be signed in to change notification settings

data-miner00/Linker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues MIT License


Linker

An application that stores links.
View Demo »

Explore the docs · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Roadmap
  4. Contributing
  5. License
  6. Acknowledgments

About

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.

(back to top)

Directories

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

Built With

The technologies and tools used within this project.

  • .NET Core
  • .NET MVC
  • Pnpm
  • TailwindCSS
  • JavaScript
  • jQuery
  • TSQL/SQL Server
  • SignalR
  • Powershell
  • xUnit
  • SpecFlow

(back to top)

Getting Started

Prerequisites

The list of tools that is used when development.

Installation

To run this template project in your local for personal use or contribution, simply perform the following.

  1. Clone the repo
    git clone https://github.com/data-miner00/Linker.git
  2. Install Node dependencies
    pnpm i
  3. Restore Nuget
    dotnet restore
  4. Build projects
    dotnet build
    
  5. Restore database (steps coming soon..)
  6. Run Mvc
    dotnet run --project src/Linker.Mvc/Linker.Mvc.csproj
    

(back to top)

Roadmap

  • 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).

(back to top)

Contributing

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!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the WTFPL License. See LICENSE for more information.

(back to top)

Acknowledgments

List of resources that are helpful and would like to give credit to.

(back to top)