Developed under the guidance of Professor William Keith, the User Management System showcases the capabilities of modern web technologies as a part of the IS601 course. This open-source project utilizes the 12-Factor App methodology and Agile Manifesto principles to provide a hands-on learning experience in software development, preparing students to build scalable, maintainable, and production-ready applications.
- 12-Factor App Methodology: Teaches important software engineering concepts such as codebase management, dependency control, and environmental consistency.
- Agile Practices: Encourages an environment of teamwork, iterative development, and continuous customer collaboration.
- Industry Standards: Focuses on coding standards like PEP 8 and introduces critical practices such as error handling and dependency injection.
- Profile Picture Upload with Minio: Enhances user profile management by allowing users to securely upload and store profile pictures using Minio. More about this feature
- Issues solved:
- Code Update: Automatic Verification Email on User Registration Issue Link
- Update to User Response Model: Status Code 400 for Duplicate Nickname Registration Issue Link
- Ensuring Non-Negative Skip and Positive Limit Parameters Issue Link
- Implementation of Password Validation Issue Link
- Enhanced URL Validation with Updated Regex Pattern Issue Link
Included test cases cover a variety of functionality and validation scenarios:
test_email_verification_testtest_create_user_duplicate_nicknametest_user_base_nickname_valid- and more...
Configured S3 bucket with a image file using Minio; the screenshot below illustrates this setup.

- FastAPI: For high-performance API development.
- SQLAlchemy: For database management.
- PostgreSQL: For handling large-scale databases.
- MinIO: For managing large datasets efficiently.
- OAuth2: For secure user authentication.
- Docker: For containerization and consistent environments.
- Alembic: For database migrations and versioning.
This project served as a bridge between theoretical knowledge and practical application, providing a deep dive into software development. I have gained valuable skills in technologies and best practices that are crucial in the software industry, equipping me for challenges in fields like software engineering, cybersecurity, and DevOps.