Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

“How do I stand out from thousands of other applicants?” Safi Ullah’s answer was to build a portfolio website from scratch: a Python- and Flask-based site for presenting machine-learning and computer-vision projects to prospective employers. His account describes a database-backed project showcase, an admin dashboard, a protected contact form, and deployment on PythonAnywhere. It is one developer’s account, not evidence that a custom portfolio improves hiring outcomes.

Why Safi Ullah chose to build the site

Ullah says he wanted more control over how he presented his work and chose Flask because he already worked in Python. That made a Python-centered backend a natural fit for him; it does not make Flask the right choice for every portfolio.

His account contrasts the custom Flask approach with WordPress and Wix, emphasizing control, a Python backend, SEO customization, and his perception of a lightweight site. Those are personal selection criteria, not results from a controlled comparison. A site builder or no-code platform may suit someone who values quick content updates over backend customization; Springboard’s career guidance recognizes code, builders, and no-code platforms as possible portfolio formats. Springboard’s portfolio guidance also advises candidates to make the content reflect their own experience and motivation.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What the application includes

The site is described as a server-rendered Flask application with public pages and an admin area. The admin dashboard stores portfolio content in a database, allowing Ullah to update projects and other profile details without editing each page’s HTML directly.

Application structure

  • An application factory and SEO-related routes.
  • Separate public and admin blueprints.
  • Project, settings, and related models.
  • Templates for the home page, project details, contact, privacy, terms, and thank-you pages.
  • Static CSS, JavaScript, and optimized images.

Portfolio and contact features

  • Individual project pages for presenting work in more detail.
  • Admin-managed projects, skills, certifications, and education.
  • A contact form that sends email through Resend.
  • CSRF protection with Flask-WTF and rate limiting on the contact form.

These are features Ullah says he implemented; their presence is not a security audit or certification.

The stack and data flow

Part Ullah’s reported choice Role in the site
Backend Python 3.x and Flask Application routes and server-rendered pages
Database SQLite for development; PostgreSQL in production Stores project and other portfolio information
ORM SQLAlchemy Connects application models to the database
Frontend HTML5, CSS3, and vanilla JavaScript Templates, styling, and browser-side behavior
Email Resend Sends messages submitted through the contact form
Deployment PythonAnywhere Hosts the Flask application through a WSGI configuration

The reported split between SQLite during development and PostgreSQL in production is useful context for understanding the build, but the account does not provide deployment configuration or establish current hosting-plan limits. Ullah says the GitHub repository is private, so readers cannot use it as a public source-code example.

How the site handles discoverability and analytics

Ullah reports implementing canonical URLs and structured data, including Person, FAQPage, SoftwareSourceCode, and BreadcrumbList schemas. He also says he added a sitemap and robots file and submitted the site to Search Console. These are implementation details from his account, not an audit confirming search visibility, ranking, or schema validity.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For analytics, he says Google Analytics 4 loads only after cookie consent. That describes his implementation approach; it does not by itself establish legal compliance in every location or under every consent configuration.

Performance work and testing claims

Ullah reports using WebP images and says they were “50% smaller” than JPEGs. Because he gives no image set or measurement method, treat that figure as his reported result for his work—not a general guarantee for converting images.

He also says he disabled canvas particle effects on mobile screens below 768 pixels, used IntersectionObserver to trigger animations, and applied cache-busting to CSS. The account does not include independent performance measurements, so these details describe chosen techniques rather than demonstrated speed improvements.

For testing, Ullah reports writing 27 automated pytest tests, including checks for sitemap output, robots.txt, and contact-form CSRF behavior. He says all passed before each push. No independent test run or continuous-integration record is provided, so the test count and passing status remain his account.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What to consider before following this approach

A custom Flask portfolio makes sense when the site itself is a useful way to demonstrate Python web-development skills and when the owner is prepared to maintain the application. It also adds responsibilities that a hosted builder may handle for you.

  • Choose custom code if backend control and a Python implementation are important parts of the project.
  • Choose a builder or no-code platform if publishing and updating project content quickly matters more than owning a custom backend.
  • Plan for ongoing maintenance if you deploy your own application, including database operations, security updates, backups, and hosting configuration.
  • Make the work easy to evaluate whichever format you use: explain your contribution, the problem, and the outcome for each project rather than relying on a list of technologies.

Ullah’s reflection—“Building this portfolio from scratch taught me more than any tutorial ever could”—is a useful description of his own learning experience, not proof that custom sites outperform tutorials or templates.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.