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.
- Features
- Tech Stack
- Installation & Setup
- Authentication & Authorization
- Project Structure
- Contributing
- License
Log practice sessions with date, duration, and focus area (e.g., scales, chords, songs). View practice history and track progress over time.
Create, edit, and manage setlists for gigs or jam sessions. Add song details (title, key, BPM, duration, and notes).
Custom authentication system using cookie-based authentication (no Identity). Secure user registration and login with BCrypt password hashing.
- C# Backend logic
- JavaScript for client-side interactivity
- ASP.NET Core MVC Web application with Razor Pages View rendering
- SQL Server Database
- Dapper ORM for database access
- Bootstrap + CSS UI styling
- BCrypt Password hashing
- xUnit: For unit testing.
- Moq: For creating mock objects in unit tests.
Prerequisites
- .NET 8.0 SDK
- SQL Server or localdb
- Visual Studio or VS Code
git clone https://github.com/logan-tolbert/TheGuitaristsToolkit.git
cd TheGuitaristsToolkit
- Open Visual Studio.
- Click on File > Open > Project/Solution.
- Select the .sln file in the project folder.
Before running the project, ensure all required dependencies are installed:
- Open the Package Manager Console in Visual Studio (Tools > NuGet Package Manager > Package Manager Console).
- Run the following command:
dotnet restore
To build the project, either:
- Click Build > Build Solution from the menu, or Run the following command in the Terminal or Package Manager Console:
dotnet build
To set up the database using App.DbDeploy, follow these steps:
- Open Visual Studio and navigate to the Solution Explorer.
- Locate the project containing App.DbDeploy.
- Right-click on the project name.
- Select Publish from the context menu.
- In the Publish window, enter the Database Name.
- Set up the Connection String by selecting or creating a new database.
- (Optional) Save a Publish Profile for future use.
- Click Publish to deploy the database.
Once published, the post-deployment script will automatically:
- Populate the database with initial data.
- Create an admin user with the default password:
testPassword
If you want to change the default admin password, follow these steps:
- Locate the post-deployment script in
App.DpDeploy/scripts
before publishing. - Find the section where the admin user is created.
- Replace the default password hash with a new bcrypt hash.
- Save the changes before publishing.
- After publishing, retrieve the Connection String from the database configuration.
- Create as
appsettings.json
file inApp.Web
. - Update the ConnectionStrings section with your new database connection:
"ConnectionStrings": {
"Defaulte": "Server=YOUR_SERVER;Database=GuitaristsToolkitTestDB;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Once the build is successful, you can run the application:
- Click Run (
▶️ ) / Start Debugging (F5) in Visual Studio, OR - Use the command:
dotnet run
This will start the application, and you should see output indicating that your ASP.NET Core server is running.
Create a separate appsettings.Test.json
file in the App.Tests
project with its own connection string:
"ConnectionStrings": {
"Testing": "Server=YOUR_SERVER;Database=GuitaristsToolkitTestDB;Trusted_Connection=True;MultipleActiveResultSets=true"
}
User authentication is handled via cookie-based authentication. Practice sessions and setlists are tied to the logged-in user.
/Controllers - Handles HTTP requests
/Models - Defines data models
/Repo - Database access layer
/Views - Razor pages for UI
/wwwroot - Static assets (CSS, JS)
Feel free to submit pull requests and report issues!
This project is licensed under the MIT License.