Visitor Book
Visitor Book is a personal visitor management system developed to manage visitable places and visitor registration workflows. Users can manage locations, visitor records, and related administration processes through a web interface.
- Context
- Personal
- Category
- Web
- Period
- Oct 1, 2023 - Jan 1, 2024
Technologies
C# ASP.NET Core MVC 7 Bootstrap HTML CSS JavaScript jQuery Docker Docker Compose Multilanguage Support Fluent Validation AutoMapper Generic Repository Pattern UnitOfWork Pattern Permission Based Authentication Permission Based Authorization Audit Logs Exception Handling Middleware DataTables MVC Grid SQL Server Entity Framework Core 7 Code First jQuery Validation Unobtrusive Bundler Minifier Toastr SweetAlert Git GitHub Cloudflare Custom Domain Ubuntu Server
Project Type
- The project is a full stack web application.
- It was developed with the ASP.NET Core MVC project template.
- It is a personal visitor management system project.
Architecture / System Design
- The project can be separated into two main layers: web application and database.
- The web application layer includes both the frontend and backend parts within an MVC based structure.
- The architecture combines MVC with a layered architecture approach.
- The database layer is built with SQL Server.
- The application layer was designed to be modular, loosely coupled, and extendable.
- The solution includes Business, Core, DataAccess, and User Interface layers.
- The Business layer contains service definitions and business rules.
- The Core layer contains abstractions, helper classes, and shared structures.
- The DataAccess layer contains repositories and migrations.
- The User Interface layer contains views, middleware, and areas.
Technologies Used
- Backend and MVC: C#, ASP.NET Core MVC 7, Entity Framework Core 7, SQL Server, Code First
- Frontend: Bootstrap, HTML, CSS, JavaScript, jQuery, DataTables, MVC Grid
- Architecture and patterns: Generic Repository Pattern, UnitOfWork Pattern, DTO, ViewModel, AutoMapper
- Validation and security: Fluent Validation, jQuery Validation Unobtrusive, permission based authentication, permission based authorization
- Logging and error handling: Audit Logs, Exception Handling Middleware
- UI feedback and tooling: Toastr, SweetAlert, Bundler Minifier
- DevOps and deployment: Docker, Docker Compose, Git, GitHub, Cloudflare, Custom Domain, Ubuntu Server
Key Technical Details and Modules
- Built user interfaces with Bootstrap.
- Implemented permission and role based authentication / authorization.
- Used Generic Repository and UnitOfWork Pattern.
- Added template-based email sending.
- Added multi-language support.
- Used AutoMapper for object mapping.
- Generated fake data with Bogus.
- Used DTO objects for data transfer.
- Used ViewModel objects in views.
- Logged database operations as audit logs.
- Logged errors as error logs.
- Added pagination, search, and filtering support for data.
- Used two table listing tools: DataTables and MVC Grid.
- Handled database operations with Entity Framework Core.
- Managed database migrations with the Code First approach.
- Implemented server-side validation with Fluent Validation.
- Implemented client-side validation with jQuery Validation Unobtrusive.
- Used extension methods where needed.
- Minified CSS and JavaScript files with Bundler Minifier.
- Managed notifications with Toastr and SweetAlert.
- Added Docker and Docker Compose support.
Participation and Timeline
- I developed the project independently.
- I took part in the full process from start to finish.
- The project was developed between October 2023 and January 2024.
Project Management / Team Structure
- I used Trello for personal project management and task tracking.
- Since I developed the project alone, there was no separate team structure.
Personal Contributions and Responsibilities
- I am responsible for the entire project.
- The application is currently published on my own physical server running Ubuntu Server.
- I manage all required development, deployment, domain, and infrastructure processes myself.
Deployment Information
- The project is dockerized and its image is hosted on Docker Hub.
- The source code is versioned with Git and publicly available on GitHub.
- Deployment is handled through my own physical Ubuntu Server environment.
- Domain and DNS management are handled through Cloudflare.
- When needed, SSL certificates are managed through Let's Encrypt.