Gallery system that support QR

Job ID: 37617755

Budget: €250 – €750 EUR

project requirements, involving a Backend API system, a User Front-End, and an Admin Front-End, let's outline the requirements, database tables, and necessary pages for each component. The system will use .NET Core C# for the backend, PostgreSQL for the database, and Angular for the front-end development.
Backend API System
Functional Requirements
1. User Authentication and Authorization:
• Support for traditional email/password login, as well as OAuth integrations for Google, Facebook, and Apple.
2. Subscription Management:
• Integration with Stripe Billing for handling subscriptions and payments.
• API endpoints for creating, updating, and checking subscription statuses.
3. Profile and Photo Management:
• Endpoints for creating and managing user profiles and photo uploads.
4. QR Code Generation:
• Generate and retrieve QR codes linked to user profiles.
5. Email Services:
• Send out email reminders for subscription renewals with Stripe payment links.
6. Visit Tracking and Aggregation:
• Log visits to user profiles and perform data aggregation for reporting purposes.
7. Admin-Specific Features:
• Endpoints for admin users to manage all user profiles and view platform-wide statistics.
Database Tables
• Users
• Photos
• Admins
• Subscriptions
• ProfileVisits
• AggregatedProfileVisits
Cron Jobs/Background Tasks
• Subscription Reminders: Regularly scheduled tasks to send out subscription renewal reminders.
• Data Aggregation: Periodic tasks to aggregate profile visit data.
User Front-End (User Portal)
Pages and Features
1. Home/Landing Page: Introduction to the service and call-to-action for registration or login.
2. Sign Up/Login Page: Registration and login options, including OAuth integrations.
3. User Dashboard: Overview of the user’s profile, subscription status, and quick links.
4. Profile Management Page: Edit personal details and view QR code.
5. Photo Upload and Management: Interface for uploading and managing photos.
6. Subscription Management: View and modify subscription plans.
7. Gallery View: Display of user’s uploaded photos.
8. Visit Statistics: Display of profile visit data (day, month, year).
9. Contact/Support Page: For user inquiries and assistance.
Admin Front-End (Admin Dashboard)
Pages and Features
1. Admin Login Page: Secure login for administrators.
2. Dashboard Overview: High-level statistics including new/ending subscriptions, user activity, and more.
3. User Management: View, edit, and delete user profiles.
4. Subscription Overview: Monitor active, upcoming, and expiring subscriptions.
5. Visit Reports: Detailed analytics on profile visits, with filtering options (per day, month, year).
6. System Health and Analytics: Overview of system performance and usage statistics.
Technical and Operational Considerations
• Stripe Integration: Secure handling of payment information and integration with the Stripe API for subscription management.
• Email Service Integration: For sending automated emails, a reliable email service integration is needed.
• OAuth Integration: Implement secure OAuth flows for Google, Facebook, and Apple sign-in options.
• Security: Robust security measures, especially for the admin dashboard and user data protection.
• Scalability: Ensuring the backend can handle the expected load and scale accordingly.
• Responsive Design: The front-end applications should be responsive to work across different devices.
Conclusion
Project is shaping up to be a robust and feature-rich platform. The separation of concerns between the backend, user front-end, and admin front-end, along with the integration of third-party services like Stripe and OAuth providers, sets a solid foundation for a scalable and user-friendly application. Remember, each component should be developed with security, performance, and scalability in mind.

1. Users Table
UserID: Integer (Primary Key, Auto-increment)
Email: Varchar(255) (Unique, Not Null)
PasswordHash: Varchar(255) (Not Null)
Name: Varchar(255)
Bio: Text
CreationDate: DateTime (Not Null)
LastUpdateDate: DateTime
IsEmailVerified: Boolean (Not Null, Default False)
VerificationToken: Varchar(255)
VerificationTokenExpiry: DateTime
QRCodeURL: Varchar(255)
2. Photos Table
PhotoID: Integer (Primary Key, Auto-increment)
UserID: Integer (Foreign Key - Users.UserID)
PhotoURL: Varchar(255) (Not Null)
Caption: Varchar(255)
UploadDate: DateTime (Not Null)
DisplayOrder: Integer (Not Null, Default 0)
Tags: Varchar(255)
3. Admins Table
AdminID: Integer (Primary Key, Auto-increment)
Email: Varchar(255) (Unique, Not Null)
PasswordHash: Varchar(255) (Not Null)
Name: Varchar(255)
LastLoginDate: DateTime
4. Subscriptions Table
SubscriptionID: Integer (Primary Key, Auto-increment)
UserID: Integer (Foreign Key - Users.UserID)
PlanType: Varchar(50) (Not Null)
StartDate: DateTime (Not Null)
EndDate: DateTime (Not Null)
IsActive: Boolean (Not Null)
5. ProfileVisits Table
VisitID: Integer (Primary Key, Auto-increment)
UserID: Integer (Foreign Key - Users.UserID)
VisitTimestamp: DateTime (Not Null)
VisitorInfo: Varchar(255)
6. AggregatedProfileVisits Table
AggregationID: Integer (Primary Key, Auto-increment)
UserID: Integer (Foreign Key - Users.UserID)
VisitCount: Integer (Not Null)
StartDate: Date (Not Null)
EndDate: Date (Not Null)