{"id":30304648,"url":"https://github.com/dancer/cst2550","last_synced_at":"2025-08-17T07:11:27.937Z","repository":{"id":306821412,"uuid":"1027316824","full_name":"dancer/CST2550","owner":"dancer","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-27T19:33:50.000Z","size":35185,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-27T21:30:45.976Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dancer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2025-07-27T19:10:47.000Z","updated_at":"2025-07-27T19:33:53.000Z","dependencies_parsed_at":"2025-07-27T21:41:04.682Z","dependency_job_id":null,"html_url":"https://github.com/dancer/CST2550","commit_stats":null,"previous_names":["dancer/cst2550"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/dancer/CST2550","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dancer%2FCST2550","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dancer%2FCST2550/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dancer%2FCST2550/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dancer%2FCST2550/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dancer","download_url":"https://codeload.github.com/dancer/CST2550/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dancer%2FCST2550/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270818539,"owners_count":24651206,"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","status":"online","status_checked_at":"2025-08-17T02:00:09.016Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2025-08-17T07:11:22.857Z","updated_at":"2025-08-17T07:11:27.926Z","avatar_url":"https://github.com/dancer.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Library Management System\n\nM01031195\n\nConsole-based Library Management System for CST2550 coursework. Built with C# .NET 8.0 and SQL Server LocalDB.\n\n## Features\n\n- **Resource Management**: Add, search, and manage books, journals, and media\n- **Interactive Reading**: Read books with bookmarks and save progress\n- **Search System**: Find resources by title, author, genre, or year ranges\n- **Borrowing Workflow**: Track borrowed items and due dates\n- **Reports**: View statistics, overdue items, and borrowing history\n- **Custom Data Structures**: Hash tables and binary search trees built from scratch\n\n## How to run it\n\n### What you need first\n\n1. **SQL Server LocalDB** (this is required - the app won't work without it)\n2. **.NET 8.0 SDK** or higher\n\n### Getting SQL Server LocalDB\n\n**Easiest way (if you have Visual Studio):**\n\n- Open Visual Studio\n- Go to Tools → Get Tools and Features\n- Click \"Individual Components\" tab\n- Search for \"SQL Server Express LocalDB\"\n- Install it\n\n**If you don't have Visual Studio:**\n\n- Download from: https://www.microsoft.com/en-us/sql-server/sql-server-downloads\n- Choose \"Express\" → \"Custom\" installation\n- Select \"LocalDB\" component\n\n**Command line (if you're into that):**\n\n```bash\nwinget install Microsoft.SQLServerExpressLocalDB\n```\n\n### Actually running it\n\n1. **Open a terminal and go to the project folder:**\n\n   ```bash\n   cd Librarian\\Librarian\n   ```\n\n2. **Run it:**\n\n   ```bash\n   dotnet run\n   ```\n\n   The database gets created automatically the first time you run it (pretty cool!)\n\n### Running tests\n\n```bash\ncd Librarian\\Librarian.Tests\ndotnet test\n```\n\n### Building everything\n\nIf you need to build the whole thing:\n\n```bash\ndotnet build\n```\n\nIf packages are missing:\n\n```bash\ndotnet restore\n```\n\n## How to use it\n\n### Main menu stuff\n\n- **add resource** - Add new books, journals, or media to the library\n- **search library** - Find stuff by title, author, genre, whatever\n- **read content** - Actually read the books with bookmarks (this was fun to build)\n- **borrow item** - Check out resources to people\n- **return item** - Return stuff when you're done\n- **view reports** - See statistics, what's overdue, what's borrowed\n- **manage resources** - Update or delete resources\n- **exit** - Close the app\n\n### Reading books\n\nThe reading feature is pretty cool:\n\n1. Enter a resource ID (try 1-5 for the sample books I wrote)\n2. Enter your name to start reading\n3. Navigate with these keys:\n   - **n** - Next page\n   - **p** - Previous page\n   - **b** - Set a bookmark\n   - **g** - Go to your bookmark\n   - **q** - Quit and save where you left off\n\n### What's actually in the library\n\n**Books with full readable content:**\n\n- **ID 1**: The Young Wizard's Journey\n- **ID 2**: Heroes United: The Battle for Earth\n- **ID 3**: Wizarding World: Magical Creatures Encyclopedia\n- **ID 5**: The Dark Arts: A History of Forbidden Magic\n- **ID 11**: The Hobbit's Great Adventure\n- **ID 12**: Pride and Modern Prejudice\n- **ID 13**: 1984: A Dystopian Future\n- **ID 14**: To Kill a Mockingbird's Legacy\n- **ID 15**: The Great Gatsby's Era\n\n**Academic Journals:**\n\n- **ID 6**: Journal of Advanced Magical Theory\n- **ID 7**: Modern Defense Strategies Quarterly\n- **ID 16**: Journal of Computer Science Research\n- **ID 17**: International Medical Research Quarterly\n\n**Movies/Media on disc:**\n\n- **ID 4**: Superhero Training Academy: Complete Season 1\n- **ID 8**: The Avengers\n- **ID 9**: The Dark Knight\n- **ID 10**: Inception\n- **ID 18**: The Matrix\n- **ID 19**: Interstellar\n\n## Technologies\n\n- **.NET 8.0** with C#\n- **Entity Framework Core** with SQL Server LocalDB\n- **xUnit** for testing\n- **Custom data structures** (no built-in collections)\n\n## Database\n\nUses SQL Server LocalDB with Entity Framework Code First. Database gets created automatically on first run.\n\n- **Database Name**: `LibraryDB`\n- **Manual setup script**: `Librarian\\Database\\CreateLibraryDatabase.sql`\n\n**If database issues occur:**\n\n1. Close the app\n2. Delete database files from LocalDB location\n3. Run app again to recreate with sample data\n\n## Project Structure\n\n```\nLibrarian/\n├── Librarian/                  # Main application\n│   ├── Models/                 # Data models\n│   ├── DataStructures/         # Custom hash table \u0026 BST\n│   ├── Services/               # Business logic \u0026 UI\n│   └── Data/                   # EF Core context\n├── Librarian.Tests/            # Unit tests\n├── Database/                   # SQL setup script\n└── REPORT.md                   # Development report\n```\n\n## Troubleshooting\n\n**Database issues:**\n\n- Ensure SQL Server LocalDB is installed\n- Database recreates automatically if deleted\n\n**App won't start:**\n\n- Check you're in `Librarian\\Librarian` folder\n- Verify .NET 8.0 SDK is installed\n- Run `dotnet restore` if packages are missing\n\n## About\n\nBuilt for CST2550 Coursework\n\nThis is an academic project for educational purposes only.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdancer%2Fcst2550","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdancer%2Fcst2550","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdancer%2Fcst2550/lists"}