{"id":26666995,"url":"https://github.com/logan-tolbert/guitariststoolkit","last_synced_at":"2026-04-13T02:05:35.823Z","repository":{"id":276201209,"uuid":"928548580","full_name":"logan-tolbert/GuitaristsToolkit","owner":"logan-tolbert","description":"Guitarist's Toolkit is a web application designed for musicians to track their practice sessions and manage setlists for performances. This tool helps guitarists develop structured practice habits and organize songs for gigs or jam sessions.","archived":false,"fork":false,"pushed_at":"2025-03-24T19:27:40.000Z","size":1664,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T20:29:18.313Z","etag":null,"topics":["asp-net-core","asp-net-mvc","bcrypt","bootstrap","dotnet","guitar","task-management"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/logan-tolbert.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-06T20:12:04.000Z","updated_at":"2025-03-24T19:27:44.000Z","dependencies_parsed_at":"2025-02-06T21:30:59.962Z","dependency_job_id":"c685b640-7efb-40a2-a25d-d590c4970bc1","html_url":"https://github.com/logan-tolbert/GuitaristsToolkit","commit_stats":null,"previous_names":["logan-tolbert/practicetrackerapp","logan-tolbert/theguitariststoolkit","logan-tolbert/guitariststoolkit"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logan-tolbert%2FGuitaristsToolkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logan-tolbert%2FGuitaristsToolkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logan-tolbert%2FGuitaristsToolkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logan-tolbert%2FGuitaristsToolkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/logan-tolbert","download_url":"https://codeload.github.com/logan-tolbert/GuitaristsToolkit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245532112,"owners_count":20630870,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asp-net-core","asp-net-mvc","bcrypt","bootstrap","dotnet","guitar","task-management"],"created_at":"2025-03-25T19:35:52.582Z","updated_at":"2026-04-13T02:05:35.814Z","avatar_url":"https://github.com/logan-tolbert.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎸 Guitarist's Toolkit\n\nGuitarist's Toolkit is a web application designed for musicians to track their practice sessions and manage setlists for performances. This tool helps guitarists develop structured practice habits and organize songs for gigs or jam sessions.\n\n![Guitarist's Toolkit Preview](https://github.com/logan-tolbert/dev-space/blob/main/demos/gtk-preview.gif)\n\n## Table of Contents\n- [Features](#-features)\n- [Tech Stack](#-tech-stack)\n- [Installation \u0026 Setup](#-installation--setup)\n- [Authentication \u0026 Authorization](#-authentication--authorization)\n- [Project Structure](#-project-structure)\n- [Contributing](#-contributing)\n- [License](#-license)\n\n## 🚀 Features\n\n #### 🎵 Practice Tracker\n\nLog practice sessions with date, duration, and focus area (e.g., scales, chords, songs).\nView practice history and track progress over time.\n\n #### 📋 Setlist Manager\n\nCreate, edit, and manage setlists for gigs or jam sessions.\nAdd song details (title, key, BPM, duration, and notes).\n\n#### 🔐 User Authentication\n\nCustom authentication system using cookie-based authentication (no Identity).\nSecure user registration and login with BCrypt password hashing.\n\n## 🛠 Tech Stack\n\n- C# Backend logic\n- JavaScript for client-side interactivity\n- ASP.NET Core MVC Web application with Razor Pages View rendering \n- SQL Server Database\n- Dapper ORM for database access\n- Bootstrap + CSS UI styling\n- BCrypt Password hashing\n- xUnit: For unit testing.\n- Moq: For creating mock objects in unit tests.\n\n## 🏗 Installation \u0026 Setup\n\n**Prerequisites**\n\n- .NET 8.0 SDK\n- SQL Server or localdb\n- Visual Studio\n\n### 📌 Step 1: Clone the Repository\n\n```sh\ngit clone https://github.com/logan-tolbert/TheGuitaristsToolkit.git\ncd TheGuitaristsToolkit\n```\n### 📌 Step 2: Open the Project in Visual Studio\n- Open Visual Studio.\n- Click on File \u003e Open \u003e Project/Solution.\n- Select the .sln file in the project folder.\n\n### 📌 Step 3: Restore Dependencies\nBefore running the project, ensure all required dependencies are installed:\n\n- Open the Package Manager Console in Visual Studio (Tools \u003e NuGet Package Manager \u003e Package Manager Console).\n- Run the following command:\n```powershell\ndotnet restore\n```\n### 📌 Step 4: Build the Project\nTo build the project, either:\n\n- Click Build \u003e Build Solution from the menu, or\nRun the following command in the Terminal or Package Manager Console:\n```powershell\ndotnet build\n```\n### 📌 Step 5: Database Setup \n\nTo set up the database using **App.DbDeploy**, follow these steps:\n\n#### 🚀 Step 1: Open the Publish Wizard\n1. Open **Visual Studio** and navigate to the **Solution Explorer**.\n2. Locate the project containing **App.DbDeploy**.\n3. **Right-click** on the project name.\n4. Select **Publish** from the context menu.\n\n#### ⚙️ Step 2: Configure the Database Connection\n1. In the **Publish** window, enter the **Database Name**.\n2. Set up the **Connection String** by selecting or creating a new database.\n3. *(Optional)* Save a **Publish Profile** for future use.\n4. Click **Publish** to deploy the database.\n\n#### 📜 Step 3: Execute the Deployment Script\nOnce published, the **post-deployment script** will automatically:\n- **Populate the database with initial data**.\n- **Create an admin user** with the default password:  `testPassword`\n\n#### 🔑 Step 4: Customizing the Admin Password\nIf you want to **change the default admin password**, follow these steps:\n1. Locate the **post-deployment script** in `App.DpDeploy/scripts` before publishing.\n2. Find the section where the **admin user** is created.\n3. Replace the default password hash with a new **bcrypt hash**.\n4. Save the changes before publishing.\n\n#### 🔗 Step 5: Retrieve and Configure the Connection String\n1. After publishing, retrieve the **Connection String** from the database configuration.\n2. Create as **`appsettings.json`** file in `App.Web`.\n3. Update the **ConnectionStrings** section with your new database connection:\n```json\n\"ConnectionStrings\": {\n\t\"Defaulte\": \"Server=YOUR_SERVER;Database=GuitaristsToolkitTestDB;Trusted_Connection=True;MultipleActiveResultSets=true\"\n}\n```\n### ⚡Step 5: Run the Project\nOnce the build is successful, you can run the application:\n\n- Click Run (▶️) / Start Debugging (F5) in Visual Studio,\nOR\n- Use the command:\n```powershell\ndotnet run\n```\nThis will start the application, and you should see output indicating that your ASP.NET Core server is running.\n\n## Configure Integration Tests\n\nCreate a separate `appsettings.Test.json` file in the `App.Tests` project with its own connection string:\n```json\n\"ConnectionStrings\": {\n\t\"Testing\": \"Server=YOUR_SERVER;Database=GuitaristsToolkitTestDB;Trusted_Connection=True;MultipleActiveResultSets=true\"\n}\n```\n\n## 🔑 Authentication \u0026 Authorization\n\nUser authentication is handled via cookie-based authentication.\nPractice sessions and setlists are tied to the logged-in user.\n\n## 📂 Project Structure\n\n```plaintext\n/App.DbDeploy - SQL Server Database Project (Database schema and deployments)\n/App.Data - Dapper SQL Server database interaction layer\n/App.Models - Data model definitions\n/App.Repo - Database access layer\n/App.Security - BCrypt password hashing implementation\n/App.Services - User registration, authentication, \u0026 authorization services\n/App.Tests - Unit \u0026 Integration Tests\n/App.Web - Razor pages for UI\n  |-/Controllers - Handles HTTP requests and responses\n  |-/Models - View models for Razor Pages\n  |-/Properties - Application configuration\n  |-/Views - Razor Page views\n  |-/wwwroot - Static assets (CSS, JS)\n  |-Program.cs - Application entry point\n```\n\n## 👥 Contributing\n\nFeel free to submit pull requests and report issues!\n\n## 📜 License\n\nThis project is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogan-tolbert%2Fguitariststoolkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flogan-tolbert%2Fguitariststoolkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogan-tolbert%2Fguitariststoolkit/lists"}