Skip to main content
RapidDev - Software Development Agency
bubble-tutorial

How to design a portfolio site in Bubble

Design a professional portfolio website in Bubble with a project showcase, about section, skills display, contact form, and custom domain. This tutorial covers building an impressive portfolio using Bubble's visual editor with database-driven project cards, smooth animations, and a responsive layout that works on all devices.

What you'll learn

  • How to build a project showcase with image galleries
  • How to create an about section with skills visualization
  • How to add a contact form that sends emails
  • How to set up a custom domain for your portfolio
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Beginner4 min read25-30 minAll Bubble plans (custom domain requires paid plan)March 2026RapidDev Engineering Team
TL;DR

Design a professional portfolio website in Bubble with a project showcase, about section, skills display, contact form, and custom domain. This tutorial covers building an impressive portfolio using Bubble's visual editor with database-driven project cards, smooth animations, and a responsive layout that works on all devices.

Overview: Portfolio Websites in Bubble

A portfolio website showcases your work, skills, and experience. Bubble makes it easy to build a dynamic, database-driven portfolio that you can update without touching code. This tutorial builds a complete portfolio site suitable for designers, developers, freelancers, and founders.

Prerequisites

  • A Bubble account
  • Project images and descriptions ready
  • Basic understanding of the Design tab and Data Types

Step-by-step guide

1

Create the portfolio data model

Create a 'Project' Data Type with fields: title (text), description (text), short_description (text), cover_image (image), images (list of image), tags (list of text), url (text — link to live project), order (number). Create a 'Skill' Option Set with options representing your skills (e.g., Design, Development, Strategy) with a 'level' attribute (1-100).

Expected result: Project data type and Skill option set are created.

2

Build the hero and about sections

On your index page, create a hero section with your name, title, and a brief tagline in large text. Below, add an about section with your photo, bio text, and a skills bar chart. For skills, use a Repeating Group of your Skill options. In each cell, display the skill name and a Group styled as a progress bar with width set to the skill's level percentage.

Expected result: A hero section and about section with visual skill bars are displayed.

3

Create the project showcase grid

Add a section with a Repeating Group (3-column grid) showing all Projects sorted by order. Each card displays cover_image, title, short_description, and tags as badges. Add a hover effect using conditional formatting: When This Group is hovered → show an overlay with 'View Project' text. Clicking navigates to the project detail page.

Expected result: A responsive grid of project cards with hover effects.

4

Build the project detail page

Create a 'project' page that receives a Project ID via URL parameter. Display the full title, description, all images in a gallery or slideshow, tags, and a link to the live project URL. Add Previous/Next navigation to browse between projects.

Expected result: Individual project pages show full details with image galleries.

5

Add a contact form with email

Add a contact section with inputs for name, email, and message. The Submit button workflow: Send email → To: your email, Subject: 'Portfolio Contact from ' + name input, Body: message input + sender email. Show a success message and clear the form. Add reCAPTCHA to prevent spam.

Pro tip: Store contact submissions in a ContactMessage data type as a backup in case emails fail.

Expected result: Visitors can send you messages through a contact form.

Complete working example

Workflow summary
1PORTFOLIO SITE ARCHITECTURE
2===============================
3
4DATA TYPES:
5 Project: title, description, short_description, cover_image,
6 images (list), tags (list), url, order
7 ContactMessage: name, email, message, date
8
9OPTION SET: Skill
10 Options: Design (90), Development (85), Strategy (75)
11 Attribute: level (number)
12
13PAGES:
14 index Hero, About, Skills, Project Grid, Contact
15 project Individual project detail with gallery
16
17WORKFLOWS:
18 Submit Contact: Send email + Create ContactMessage
19 View Project: Navigate to project page with ID

Common mistakes when designing a portfolio site in Bubble

Why it's a problem: Not optimizing images before uploading

How to avoid: Compress all images to under 300KB before uploading. Use JPEG for photos and PNG for graphics with transparency.

Why it's a problem: Hardcoding project content instead of using the database

How to avoid: Store all projects in a Project data type and display dynamically using Repeating Groups.

Why it's a problem: Not making the portfolio responsive

How to avoid: Test at all breakpoints and ensure the grid collapses to 1-2 columns on mobile

Best practices

  • Store projects in a database for easy updates without editing the page
  • Compress all images before uploading for fast page loads
  • Make the site fully responsive for mobile portfolio viewing
  • Add SEO meta tags on every page for search visibility
  • Use a custom domain for professional credibility
  • Keep the design clean with consistent typography and spacing

Still stuck?

Copy one of these prompts to get a personalized, step-by-step explanation.

ChatGPT Prompt

I want to build a professional portfolio website in Bubble.io with a project showcase, about section, skills visualization, and contact form. Can you design the page layout and data model?

Bubble Prompt

Build a portfolio website with a hero section, about me with skills bars, a project showcase grid with hover effects, project detail pages, and a contact form that sends emails.

Frequently asked questions

Can I use a custom domain?

Yes. Custom domains are available on paid Bubble plans. Go to Settings → Domain/email to configure your domain with DNS records.

How do I add project filtering by category?

Add category buttons above the grid. Use a custom state for selected category and filter the Repeating Group search with a category constraint.

Can I add animations to the portfolio?

Yes. Use Bubble's built-in transitions or add CSS animations via an HTML element for scroll-triggered effects.

How do I make the portfolio SEO-friendly?

Set custom meta titles and descriptions in Settings. Use descriptive slugs for project pages. Add alt text to all images.

Can I password-protect certain projects?

Yes. Add a 'is_private' field to Project and require a password or login before showing private project details.

Can RapidDev build a custom portfolio site?

Yes. RapidDev designs and builds polished portfolio websites with custom animations, CMS integration, and advanced interactive features.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Need help with your project?

Our experts have built 600+ apps and can accelerate your development. Book a free consultation — no strings attached.

Book a free consultation

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.