Featuresο
π§βπ» Developer Experienceο
Dev containers:
Flask container with pre-configured with:
VSCode launch.json for debugging the Flask app,
Prettier for HTML, CSS, and JS formatting,
Pre-commit hooks for code quality checks,
Markdownlint for Markdown formatting,
Black for Python code formatting,
Commitlint for commit message linting.
Postgres as a development database,
pgAdmin pre-connected to the development.
CI/CD pipelines with GitHub Actions to:
Run pre-commit hooks,
Run tests,
Automate semantic release for versioning and changelog generation,
Build and deploy the documentation,
Build and deploy the app to production.
βοΈ Deploymentο
π³ Dockerized Flask for stateless continuous deployment for scalability,
ποΈ Database model abstracted with ORM,
π¦ S3 object storage with pre-signed URLs.
π³ Stripe Integrationsο
Subscriptions,
Different subscription tiers,
Billing page with Invoices,
Integration mechanism:
To begin a subscription, we send the user to Stripe with a checkout session,
Then listen to Stripe webhook events to process the results,
We set the Products in Stripe, then insert their prices into the Tiers table.
One-off credit purchases for pre-paid metered usage.
π Authenticationο
Sign up flow,
Sign up with Google option,
Email validation requirement,
Two factor authentication (TOTP only),
Forgot password flow,
Account details page where the user can:
Upload a profile picture (stored in S3),
Change profile details like first & last name.
π§ Transactional Emails with SMTPο
About Stripe subscription changes:
Confirmation,
Cancellation,
Expiration.
Email verification on registration,
Forgot password.
π¨ Securityο
Cross-Site Request Forgery (CSRF) protection in all forms,
Rate limiting: App-wide and form specific limits,
Cross-Site Scripting (XSS) protection,
Cross-Origin Resource Sharing (CORS) protection.
π¨ UIο
π Notificationsο
Toast notifications
showToast( "This is a test toast notification!", "Toast Title", "success", { autohide: false } );
Modals
showAlert( "Title", "This is a test modal dialog!", "Back", "info" );
flash()
messages from Flask styled as Bootstrap 5 alerts,
π Bootstrap HTML templatesο
Email templates for the email validation, password reset,
2 sets of page templates and Flask Blueprints:
Public pages (
templates/public/
),Auth pages for login, sign up, and password reset, 2FA (
templates/auth/
),Backend (auth required) pages (
templates/private/
).
Utilizes the new ootb Bootstrap 5 components like floating form labels,
Last, but not least: User configurable dark mode. π