A comprehensive service catalog and vendor management system built with ASP.NET Core, designed to help organizations track, manage, and maintain their software services, vendors, and compliance requirements.
- Service Catalog Management - Track and organize all your software services
- Vendor Management - Centralized vendor database with payment method integration
- License Management - Monitor software licenses and compliance requirements
- GDPR Compliance Tracking - Built-in GDPR compliance management and documentation
- Lifecycle Management - Track service lifecycle stages from conception to retirement
- Payment Method Management - Centralized payment methods shared across vendors
- Modern Web Interface - Bootstrap 5 responsive design with Font Awesome icons
- Multi-Payment Support - Credit Card, Bank Transfer, SEPA, and Prepaid payment methods
- Cost Center Integration - Link payments and services to organizational cost centers
- Comprehensive GDPR Tools - Data processing registers, controller information, and compliance tracking
- Rich Data Models - Detailed service hosting, subscription, and lifecycle information
- Framework: ASP.NET Core 9.0
- Database: PostgreSQL with Entity Framework Core
- Frontend: Razor Pages, Bootstrap 5, jQuery
- Authentication: Google OAuth 2.0 with email-based authorization
- Icons: Font Awesome 6.0
- Architecture: MVC Pattern with Repository Pattern elements
- .NET 9.0 SDK
- PostgreSQL 12.0 or higher
- Git
git clone https://github.com/yourusername/QuokkaServiceRegistry.git
cd QuokkaServiceRegistry- Create a PostgreSQL database named
quokka_service_registry - Update the connection string in
appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Database=quokka_service_registry;Username=your_username;Password=your_password"
}
}- Go to the Google Cloud Console
- Create a new project or select an existing one
- Enable the Google+ API:
- Navigate to APIs & Services > Library
- Search for "Google+ API" and enable it
- Create OAuth 2.0 credentials:
- Go to APIs & Services > Credentials
- Click Create Credentials > OAuth 2.0 Client ID
- Configure the OAuth consent screen if prompted
- Choose Web application as the application type
- Add authorized redirect URIs:
https://localhost:5211/signin-google(for HTTPS)http://localhost:5212/signin-google(for HTTP)
- Note down the Client ID and Client Secret
Update your appsettings.json or use environment variables:
{
"Authentication": {
"Google": {
"ClientId": "your-google-client-id",
"ClientSecret": "your-google-client-secret"
},
"AuthorizedUsers": "user1@example.com,user2@example.com,admin@company.com",
"AllowLocalAdminBypass": true,
"LocalAdmin": {
"Username": "admin",
"Password": "your-secure-password"
}
}
}export Authentication__Google__ClientId="your-google-client-id"
export Authentication__Google__ClientSecret="your-google-client-secret"
export Authentication__AuthorizedUsers="user1@example.com,user2@example.com"
export Authentication__AllowLocalAdminBypass="false"
export Authentication__LocalAdmin__Username="admin"
export Authentication__LocalAdmin__Password="your-secure-password"dotnet ef database updatedotnet runThe application will be available at https://localhost:5211 or http://localhost:5212.
- For development: Use the local admin login (username:
admin, password:adminby default) - For production: Only users listed in the
AuthorizedUsersconfiguration can access the application
- Services - Central service catalog entries
- Vendors - Service providers and vendors
- PaymentMethods - Centralized payment method management
- Licenses - Software license tracking
- CostCenters - Organizational cost centers
- GdprRegisters - GDPR compliance data
- Services belong to Vendors
- Vendors can use centralized PaymentMethods
- PaymentMethods are linked to CostCenters
- Services have Licenses and Lifecycle information
- GDPR registers track data processing compliance
- Service Catalog - Browse and manage all services
- Vendors - Vendor management with payment integration
- Payment Methods - Centralized payment method management
- Licenses - Software license catalog
- GDPR Compliance - Data protection and compliance tools
- Credit Card - Card holder name, number, expiry date
- Bank Transfer - Bank details, account numbers, SWIFT codes
- SEPA - SEPA mandate information and IBAN
- Prepaid - Voucher codes, balances, and expiry dates
The application automatically seeds:
- Software Licenses - Common open-source and proprietary licenses
- Cost Centers - IT, Marketing, Sales, Operations, Finance, HR departments
ASPNETCORE_ENVIRONMENT- Development/Production environmentConnectionStrings__DefaultConnection- Database connection stringAuthentication__Google__ClientId- Google OAuth Client IDAuthentication__Google__ClientSecret- Google OAuth Client SecretAuthentication__AuthorizedUsers- Comma-separated list of authorized email addressesAuthentication__AllowLocalAdminBypass- Enable local admin login (development only)Authentication__LocalAdmin__Username- Local admin usernameAuthentication__LocalAdmin__Password- Local admin password
- Google OAuth 2.0 Integration - Secure authentication via Google accounts
- Email-based Authorization - Access control through configurable authorized user list
- Local Admin Bypass - Development-only local admin access for testing
- Session Management - Secure cookie-based sessions with configurable expiration
- Data Processing Registers - Track what data is processed and why
- Controller Information - Maintain data controller details
- DPO Integration - Data Protection Officer contact management
- Compliance Notes - Document compliance measures and assessments
- Google OAuth 2.0 for secure authentication
- Email-based access control with configurable authorized users
- SQL injection prevention via Entity Framework
- XSS protection with Razor encoding
- CSRF protection with anti-forgery tokens
- Secure cookie configuration with HTTPS enforcement
- Service lifecycle tracking (Development β Testing β Production β Retirement)
- Hosting information (On-premise, Cloud, SaaS)
- Subscription management with seat counting
- Integration with vendor and license information
- Centralized payment method assignment
- Address and contact information
- GDPR processing agreement tracking
- Service usage statistics
- Multi-type payment method support
- Cost center allocation
- Vendor payment method reuse
- Payment status tracking
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow C# coding conventions
- Use Entity Framework for database operations
- Implement proper error handling
- Add appropriate validation
- Include unit tests for new features
- CatalogServiceController - Service CRUD operations
- CatalogVendorController - Vendor management
- PaymentController - Payment method management
- LicenseController - License catalog management
- Rich domain models with proper validation
- Entity Framework navigation properties
- View models for complex forms
- Enum types for categorization
- Set
ASPNETCORE_ENVIRONMENT=Production - Configure production database connection
- Set up Google OAuth credentials (see Authentication Setup above)
- Configure authorized users list via environment variables
- Disable local admin bypass:
Authentication__AllowLocalAdminBypass=false - Run
dotnet publish -c Release - Deploy to your web server
- Run database migrations in production
# Dockerfile example
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
WORKDIR /src
COPY ["QuokkaServiceRegistry.csproj", "."]
RUN dotnet restore
COPY . .
RUN dotnet build -c Release -o /app/build
FROM build AS publish
RUN dotnet publish -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "QuokkaServiceRegistry.dll"]- Database Connection Failed - Check PostgreSQL service and connection string
- Migration Errors - Ensure database exists and user has proper permissions
- Port Conflicts - Change ports in
launchSettings.jsonif 5211/5212 are in use - Google Authentication Failed - Verify OAuth credentials and redirect URIs in Google Console
- Access Denied - Check that your email is in the
AuthorizedUsersconfiguration - Local Admin Not Working - Ensure
AllowLocalAdminBypassis set totruein development
- Check the Issues page
- Review the application logs in the console
- Verify database connectivity and migrations
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with ASP.NET Core
- UI powered by Bootstrap
- Icons from Font Awesome
- Database by PostgreSQL
- β Core service catalog functionality
- β Vendor management with payment integration
- β GDPR compliance tracking
- β License management
- β Centralized payment methods
- π§ Advanced reporting features
- π§ API endpoints for external integration
- π§ Mobile responsive improvements
QuokkaServiceRegistry - Streamlining service catalog management for modern organizations.