Introduction to Bubble and No-Code Startup Development
Bubble is a powerful no-code platform that generates clean, shared code among millions of users, enabling startup founders with no coding skills to create scalable applications efficiently. Greg, founder of Bill Camp, illustrates how Bubble's all-in-one system combines design, data, workflows, and API integration within a visual editor. For those interested in broader entrepreneurship strategies alongside development, Mastering the Lean Startup Approach: Your Guide to Successful Entrepreneurship offers valuable insights.
Core Components of Bubble Applications
- Design: Drag-and-drop interface elements like input boxes, buttons, and containers, styled consistently via reusable styles and design systems.
- Data: Built-in SQL-like database that behaves like spreadsheets with tables (data types) representing users, projects, listings, etc.
- Workflows (Logic): Event-driven actions triggered by user interaction, enabling CRUD functionality, navigation, and server operations without code.
- APIs: Seamless integration with third-party services like Stripe for payments and OpenAI for AI features, accessible via plugins or the API connector. To deepen understanding of no-code automation, check out the Complete n8n Masterclass: From Beginner to AI Agent Builder.
What You Can Build with Bubble
Bubble supports development of diverse applications such as two-sided marketplaces, SaaS platforms, fintech apps, social networks, productivity tools, and AI integrations. Limitations typically reside in infrastructure scaling; Bubble suits startups with up to about 100,000 users, ideal for MVPs and growth-stage products. For a detailed example of building a social network for entrepreneurs, see Unlocking Startup Potential: Building a Social Media App for Entrepreneurs.
Practical Walkthrough: Building a Startup App on Bubble
- Building the Interface: Utilize containers and groups with flexbox layouts to assemble responsive UI, including forms, buttons, alerts, and video integration.
- Setting Up the Database: Define data types (e.g., User, Project) and fields; Bubble supports live and test databases for development and deployment.
- Creating Workflows: Implement user signup, login, and CRUD operations with Bubble's no-code workflows, including form validation and email confirmation.
- Reusable Elements & Design Systems: Build modular UI components for consistent global use across pages and projects, promoting maintainability.
- Responsive Design & SEO: Use breakpoints and style adjustments to ensure applications render well on all screen sizes and are search engine optimized. For mastering responsive design basics, refer to Getting Started with Svelte: The Ultimate Beginner's Guide.
Advanced Features
- Temporary Data Management: Leverage states and URL parameters for user interactions and dynamic page content without constantly writing to the database.
- Privacy & Security: Define server-side privacy rules to protect sensitive user data and enforce access controls.
- Collaboration & Versioning: Supports team development with features resembling code branching and merge tools.
Sample Project: Dashboard with CRUD Functionality
Greg demonstrates building a dashboard application featuring:
- User authentication and data management
- Dynamic project creation, editing, deleting, and listing using repeating groups
- Popup forms for input and feedback
- Visual feedback with notifications
- Conditional UI elements to guide user interaction
Building a Professional Marketing Site
Includes creating a hero section and navigation bar with responsive layouts that adapt from desktop to mobile seamlessly using Bubble's UI Builder and reusable elements.
Supporting Resources and Courses
- Beginners Camp: Comprehensive course for newcomers
- Flex Camp: Mastering responsive design
- Marketplace Camp: Building two-sided marketplace apps
- SaaS Camp: Advanced SaaS-specific functionality including payments and analytics
Conclusion
Bubble democratizes startup creation by simplifying complex development via visual programming, empowering founders to launch faster with prototyping, scaling efficiently within Bubble's infrastructure. Getting started requires learning both Bubble's platform and essential app design, security, and performance principles, which Greg teaches through the Bill Camp courses.
By following this guide and exploring Bill Camp's educational offerings, aspiring founders can confidently build, launch, and manage startup applications using Bubble's no-code ecosystem.
hey guys I'm Greg founder of Bill camp where we teach aspiring Founders how to build and launch their startups with
bubble back in 2017 I was super curious about building a startup I didn't really know how to code I could string together
a few things but I discovered bubble back in the very very early days when no code wasn't really a term and I actually
went on to build a successful two-sided Marketplace built entirely on bubble and strip for payments and I managed to
raise venture capital i went on to build a successful company now that was a long time ago look at where we are today um
and basically through this course I really want to dig under the hood answer your potential questions show you around
the editor and show you just what is possible with the power of bubble so let's jump into the first module and
let's talk about what is bubble and what can I actually build [Music]
so the first thing to understand is that bubble is producing code so when you hear the term no code I don't feel like
it's a very uh suitable label for what this is when you hear the term you might think there's no code involved what it
actually means is you don't have to write the syntax in a code editor bubble does that for us what are the benefits
of this well the benefits of this is that it is code that is shared amongst a user base of millions of users and their
companies that they have built so that code is clean that code Works already well okay so when you hear the term no
code it is we it's the process of creating our uh software where we don't actually
have to write syntax it's done for us can we inject code into bubble yes we can bubble is basically a blank canvas
super powerful it's a oneof a kind there's no other code there's no other no code startup quiet like bubble that
combines everything from the visual design to the data to the logic to the apis all in one okay so it's a super
interesting and Powerful product and it allows startups and their Founders to build their startups basically within a
matter of weeks or two months depending on how technical you need it to be okay and it's comprised of three some
people would say four core areas and we're going to dive into all these core areas in detail and have a look at how
we would build something like a SAS product a two-sided Marketplace a financial app productivity app uh and so
forth and guys you can do all of these things as I said Bubble spitting out code you can build any kind of startup
you want all right um but we will talk about the limitations because the limitations are more on the
infrastructure side like Airbnb wooden run on Bubble because bubble is an their own infrastructure layer in a box all
right ABNB would need something uh would need their own infrastructure team so that's the kind of difference between no
code and if you were a coder working at a company if you plan on scaling to Millions across multiple regions you
can't stay within that box however you can easily run a company up to 100,000 users um you know Bill Camp has almost
20,000 users now no they're not always concurrent users um um but you know I manage those users absolutely fine would
I ever see a need to move off a bubble for what I do um education in this space courses absolutely not you know I've got
I've built like a mini version of udem me um but I can scale to hundreds of thousands of people if I wanted to okay
so the four core parts are basically the design side so you're you're able to drag elements onto a page such as an
input box um a container buttons that kind of thing you can style them to your heart's content you can
work within your own design system um and you can string these together to build your interfaces right the things
that people interact with the dashboards the the web pages um authentication that kind of thing then you have the data so
bubble has um a SQL database built in there's nothing you need to do this is what I love there are a few noode
startups coming through now who want to separate the database from the inter interface uh from the workflows I
actually don't like that I prefer everything to be kind of um in a box per say you create your app you name it and
your environment is up and running now if you're a coder that wouldn't be the case if you're a coder there are
dependencies to install it might take you a full day to get up and running uh it's it's far more difficult and far
more technical to understand how everything pieces together but with bubble one click you're ready to build
right so you can build little MVPs ideas within a day basically uh and we'll go through how to get started
shortly so you have your yeah so you have your visual application designer or editor um and you can piece together all
the elements you need to make an interactive user interface the database side of things that might be slightly
more challenging to understand because there are relationships but the way to think of a database within bubble is
much like an Excel spreadsheet with different tabs across the bottom so your first spreadsheet tab might be users
with user data names addresses date of birth creation date in terms of the user account um and then there might be
another tab that has products you know and then there's a key that uh that creates a relationship between a
user and a number of products and products would have an image that price that kind of thing um or instead of
products it could be projects instead of projects it could be listings and we're going to dive in soon
and have a look at that in more detail and bubble gives us a visual representation of the database next we
have the logic layer okay so that's the workflow so H when I use interacts with a button or anything on the page um how
do we make it talk to the database how do we make it do things how do we make it change States how do we make it
change visually navigate to different pages do calculations and that's that's the logic layer and this is one of the
most powerful features bubble this is what bubble solved very early on and this is why bubble is a unicorn in the
no code space it is mega mega powerful and yes if you are a coder and you know JavaScript you can inject your own
JavaScript functions to run whatever you like within bubble as well and the last thing is apis so apis are a way for
different um software companies to talk to each other so a payment provider I'll always use is stripe the biggest payment
provider for startups in the world I'd argue probably the biggest startup uh for payments across all
sectors okay and they allow basically me to take payments subscriptions uh to the nth degree the
nth detail from customers and they deal with all of the the banking side of stuff the infrastructure so stripe
solves the infrastructure and I just use their tools and services to build the kind of payment services I want within
my site okay so that's one example of an API another example example of an API is for instance chat GPT you can use the
backend services to build your own version of chat gbt all right so it's a way for your bubble app to talk to
external service providers and what can I build in bubble what can I build well I mentioned early
on that you can basically build anything that's not to say you would build build anything and that's a distinction okay I
would always start if I think about the early days of Airbnb they would have Maybe started with a WordPress airbed
and breakfast think about the early days of notion or the early days of uh Uber Eats it would have started a lot more um
simpler and basically they would have had a head start of the competition if they started with bubble because it
allows you to build versions of Airbnb Uber uh you know on demand services you to build social networks or social
network functionality to incorporate into your app it allows you to build marketplaces CRM sasps finance apps AI
apps anything there's an API that exists as well the chances are that you can use it in bubble so you can tap into for
instance I'm in England and I can tap into Transport service apis and build my own mapping application for people to
get from A to B such as City mapper if you're in the UK um around the city so in terms of what are the restrictions
it's more on the infrastructure side as I mentioned earlier bubble is an infrastructure
layer it takes all the complexity out and it uses natural language for you to be able to build your app which is a far
more easy to understand all right but it's very powerful as well we're going to have a look at
that so if I wanted to build something like Salesforce well I can do that I can do that if I
just understand what kind of data Salesforce or the data structure Salesforce uses and the interactive
element I can build a version of Salesforce but Salesforce is a massive company probably with thousands of
developers um so it wouldn't scale to the sale for size um and that's the difference same with notion you know I
can build productivity apps I can build crms um I can build two-sided marketplaces is a is a great um example
of what people have been able to build successfully in bubble myself included um and we're also going to look
at you know what what do all applications have in common because most applications are actually very similar
very very similar it's a way for users to sign up to something there's authentication there's the database side
the data structure resetting passwords privacy uh conditional statements they're actually all very similar they
differ in certain ways but the marketplace you know is kind of similar to Uber Eats on demand Services very
very similar the data structure will you'll be surprised how similar data structure is Uber Eats will have a um
they will have users they will have customers they'll have drivers they'll have restaurants within the restaurants
they'll have a menu then the menu they'll have items um so not not that
difficult and then as I mentioned earlier with AI can we build a version of chat GPT which is a prompt and an
output we I've got another video on YouTube where I demonstrate how to build um like a recipe app in half an hour
it's a power of no code we don't have to mess around with code syntax and and that kind of thing we can just get
going just wanted to reiterate the app composition side and this this isn't just no code but this is
all apps so what do all apps if we zoom out from a bird's IV what are the what are the silos involved uh within
building so we have the front end that the user interacts with in the browser okay that's the app design that's where
the the designs are and and the information changes um because we have static and we
have Dynamic elements and we'll look at how you know users can upload their image uh how they can see and not see so
Things based on their role or their POS uh permissions within a particular company uh all apps have workflows
you've heard of crud create read update delete that's what we can do in bubble right create data uh display that
data in in a myriad of different ways we can edit that data and we can delete that data so when people talk about the
distinction between a website and an application websites don't really have crud applications do this is kind of the
difference where a website is more um showing static information an application shows Dynamic information
information that can change based on user behavior and of course we need somewhere
to store that data which is in a database in terms of what what is the framework to an application and earlier
on I mentioned all apps have very similar things okay so when you loan bubble it gives you the power and
opportunity to build kind of any kind of app most people then they learn bubble and they choose to build a Marketplace
or a SAS app or a fintech kind of service or an AI app uh or a web 3 kind of app and basically if you have a core
understanding you know you can go off and build any kind of app just like that so all apps need authentication they
need users people to interact with they need create read update delete this is what an app is search is becoming far
far more important these days so users need search you need email for a way to interact with people they sign up you
send them a welcome email and we'll talk about what are the various API services available and API services like email
services are becoming very straightforward these days all of them or most of them now have no code editors
themselves payment providers such as stripe you've obviously used PayPal in the past as well you can integrate
PayPal so a person doesn't need to know their card details they can just it's called oor you can just authenticate
them through a button click and PayPal does the rest okay uh you need admin dashboard so you know what's going on
within your app uh and within the admin dashboard you need account management so you can manage your data and view your
analytics so we're going to jump into the bubble editor very shortly and look at the following we're going to look at
you know how to set up a canvas containers visual elements we're going to look at how we organize our visual
elements and basically an element tree going to have a look at Styles super super important this is a sort of a
specialty area um I work with Design Systems a lot within bubble I'm actually shortly presenting in New York at bubble
con 2023 we'll be looking at reusable elements how to reuse code with
basically an industry term called dry do not repeat yourself this also applies to no code uh build once and use everywhere
and then you can edit from one area responsive design also big area uh that I focus on uh as well as SEO so if we
jump just into the editor all right let's just have a quick look around so up in the left hand side if I
click on this dropdown um we can see that we have pages and we have folders so we can
create as many pages as we like and Link off to those pages we can also send data between Pages down here we have things
like reusable elements okay so if I just show you changing a page I've got a page just to demonstrate
input forms which we'll get to I've just changed my page and I can also go to my reusable elements now the beautiful
thing about reusable elements this is just a pretend company called collab reusable elements means that they are
kind of like their own Pages where you can build function we can build design and functionality conditional statements
custom States and then you can just take that module and drop it into any page and have that run as it would the good
thing about a reusable element is that again you build in one area uh and you just maintain it in one place but you
can display it and drop it on any page so those are the pages up on the left just going to go back to index down the
left hand side when I talked about those big silos or core components of what an app is well this is where they live so
we have the design side we have the workflow side which is blank um but if we did have workflows these would be
little blocks where we basically through a step-by-step process instruct for instance how a person
should sign up and that would be very easy actually um let me show you an example so this is
just a Pages loaded event and let's just pretend it was a button click but if it was a button click to sign up we just
bubble gives us all of these options down here in terms of actions when a button is Click clicked what should
happen so we can say sign a user up and bubble have done the code for us so we need to do is connect the inputs where
do they type their email input and the option would show appear under an input where would they type a password the
option would be down here and then bubble gives us various options such as remember the email address maybe we have
an input field where we ask them what their first name is or what their company name is or we can also attach
the data here and what happens when a user clicks the button is that bubble saves this data to the database and you
will be able to actually see it visually in your database let have a look at the database
so here is a user table basically um Bubble calls them data types and here is what looks like an Excel spreadsheet and
this is where our users and data would live now we going to go ahead and actually sign some people up to the app
and then look at how we can visualize this data and even manipulate it as we would in an Excel spreadsheet we can
open a row of data and we can update data as a developer uh which is super interesting now the thing to remember
for the thing to understand about the databases that bubble provides we actually have two if you come from a
code background you obviously know what staging means bubble calls it version test so when we building our app we have
a test database and we have a live database and they are separate so when we building out new modules when we're
testing stuff we not creating live data we're creating test data so we' have two versions of the site then we would have
for instance build Camp my domain is build.io you can go now look at all the courses and that is the live database
okay but I also have Bill camp. iversion test where I'm testing new stuff and it might look slightly
different to uh bill camp. now my bill Camp version test is protected part of protected so you won't actually be able
to run anything or see anything but it allows me as the developer uh and founder of the company to be able to
work on product development and get through my product road map uh without messing up my live database right so
that's very very useful then continuing down here we're not going to go into this too much
detail but we do have an area called Styles and within Styles is where we would set things like our colors all
right we set our primary colors contrast color of the text we would set our border colors and we can create what's
called variables here where I would assign it a label neutral 100 background then I would give it a color which means
that now on the design side um I can change the color of this text I'd bring up the property editor here and I would
then choose from a Swatch all of my saved colors or I can just move this along and change whatever color I like
here as well so bubble is you starting to see that it's it's a professional system
what Nat developers would do in terms of creating Styles and variables you can do that in bubble as well it's just
visualize in a way that's much more user friendly we have plugins which enables
the extensibility of bubble a lot so if I open up plugins um you know there are thousands
of plugins so here is an API connector that involves you to connect to all sorts of products and services this is
the my number one plugin that I use um got Google material icons we've got plugins to run JavaScript we've got
multi select drop-down elements we've got progress bar elements bubble created this themselves we can see it used on
327,000 apps we' got chart elements got alerts calendars you name it guys if you can think of a API
service there's probably a plugin for this if I to search um uh let's search uh maybe open
AI here we go so and in terms of AI apps do you need to understand how the actual API Works
to pull this data well no you don't you can just use a plugin that another developer uh has created some are paid
some are free uh but look at all these open AI chat GPT so you can pull these in to your own apps in a few button
clicks you don't really have to understand how the API works because it's done for you another developer has
gone and built it and has made it available to you all right how powerful is that click to install the app click
to install the plugin now I've got a pipe line to open Ai and chat GPT to start building out the UI for my app and
chat GPT is basically the brain and I can extract data from it save it to my database or just link directly to chat
GPT and use that as a database really so that's a plug-in section then we have the settings section which we
won't go through but there basic things like setting up uh your domain um setting up some sort of global
SEO stuff collaboration with other developers so I've run a very busy um agency in the past I don't do it anymore
focus on education now but when I ran an agency there are seven of us all working on the same app so a bit like GitHub
with traditional developers uh where you can basically pull down changes from a branch bubble has the same it allows
professional developers to work together all Under One Roof um you know now now we're talking about
seven times the power as a bubble was initially built for single Founders now it's built for
teams all right and it has a log section so you know exactly what is happening in terms of server usage people always say
to me Greg what um can double scale now this is kind of an odd question it's very general it's like saying
um Can Elon Musk uh RS trucks fast was in context to what RS trucks fast in in context to to other trucks or are they
fast in terms of if we compared to a car or what about a cheeter or jumbo jet sorry like an F-16 fighter jet so you
always need context when when when asking does bubble scale there's no code scale um but I've already talked about
this it depends on what you're building if it is you're trying to build Google Earth um with bubble it's not a great
fit okay it's really not a great fit I at Bill Camp have built sort of course related stuff course modules it's a
perfect use case for bubble doesn't have a ton of concurrent users I mean it is popular um but it's you're looking at
sort of concurrent uses and you're looking at infrastructure doesn't need are you servicing people around the
world in the tens of millions well then maybe you can move off Bubble at some stage but it's not something I would
ever advise a person to think about too early unless you've built if you are a successful entrepreneur who have built
coded startups in the past you're allowed to ask this question if you are new to development work you're not
allowed to ask this question because you need to prove that your company works first okay when I built my first two
cider Marketplace and raised venture capital I didn't say not sure if I should be using bubble because does it
scale I went and proed the business case I took money from customers and I built something that was
growing ioved the use case all right um it was going to take me many many years to get to a stage where I'm like s's
blowing up doesn't really work too many concurrent users the chances of you getting there are slim uh but it is
possible um and I still to this day have not heard of a single company and I know thousands and thousands of pass through
Bill camp that has actually come off bubble and some of these companies uh are in the tens of millions of Revenue
per year okay so it just depends on the type of company that you're building is it Mega resource infrastructure
intensive from day one then bubble is not for for you are you connecting people through a two-sided Marketplace
or financial app or uh you know something like that or CRM um where it doesn't have this sort
of infrastructure intensity if so start and bubble you'd be stupid not to don't hire money and
blow it on developers build your MVP uh and I can guarantee that you'll probably end up just staying on Bubble for the
foreseeable future and bubble is chipping away at the technology all the time it's getting faster one of his
drawbacks has been page load speed but they are fixing that service side rendering will soon be a thing okay so
there's not something you should worry about too much and then so we have the UI Builder
here guys we have the UI Builder on this tab on the left and then we have the responsive design tab over here where it
has various break points where we can look at to see what our design looks like at mobile wids now I haven't done
any responsive work here which why it looks funky um but if I wanted to then I can just very quickly add some left
right padding of 16 16 I'm just jumping in and showing you what's possible what I could also do don't pay too much
attention I'm just giving you a quick example of how it feels to build and bubble I can say when page width is less
than 576 then I'm going to instruct the text size uh size
the font size sorry I'm going to change that to uh 24 no let's change this to 48 there we go there okay so very quickly
added some padding and I'm just instructing the text size to change when we get down to mobile sizes and there we
go mobile responsive guys it's that quick this is again one of the things I teach I have a course called Flex camp
that dives into this to professional standard how to take apps that look great on desktop all the way down uh to
mobile sizes based on bootstrap which is industry standard um an industry standard framework for
design spacing sizing break points that kind of thing so that's a UI Builder and a
responsive tab um and then you have your visual elements you know have text buttons if I wanted a button on this
page I would simply pick it up drag it and you can see the little line there Drop it where it needs to be the next
thing I'd do is style that button so I'd say give me a primary large I've done this in advance so I know what they are
or maybe give me a um secondary large something that stands out and then I could say something
like sign up after that I could add my workflow and I could say uh sign the
user up and if I did have inputs this is what I mentioned earlier this is where we would string it
together so those are your visual elements and if we just scan through we have icons links images shapes alerts
where videos guys you can drop in YouTube videos you can also um connect to a
third-party uh video service provider there's one called MX mu UD me uses MX many companies use MX you can use MX as
well you can have users upload 4K videos 8K videos straight into the service MX and then you can pull the data and you
can track where they are watching their videos you have HTML if you know HTML and you know a bit of CSS well you can
write your own HTML drag this element drop it on the page and create a HTML module that does something that maybe
bubble doesn't do but you'll be hard press to to find something that bubble uh hasn't created we have mapping
absolutely love mapping I teach a course called Marketplace camp where it's basically a version of Airbnb and it
shows you how to build Airbnb the endtoend process from searching for properties around the world to visually
representing it on a map to clicking on a map to filtering between dates all of that good stuff we'll have a look at
that and then we have beneath that if I install a plugin that'll show just beneath these ones here as well then we
have containers groups so this is a group here grouping is a way to um keep elements in place and to order and
position them so bubble uses bootstrap themselves uh sorry not bootstrap bubble uses Flex Flex box uh I just call it
Flex for short and it's very very powerful and it allows you to basically change the order of things so if I had
over to the layout tab I can um change this from a column to a row obviously it doesn't look good column
was top to bottom I can change it to a fixed layout drag things around to position them where I want I can say put
this icon to the bottom or put it to the previous or send it to the right hand side and so forth so we' need a group
we' apply that to a group and then the child elements within the group would be repositioned along the
page we have popups we have repeating groups love repeating groups why because they allow us to display data from the
database in a list and that's all a database is it's a list of rows and in a repeating group uh we can set up
basically how to pull all this data and visualize the data and create functionality around it okay I'm not
going to go through all of them guys we have table elements input forms there is the input there if I drop it in and I
say uh well I've styled that already this is where I could say email
address and I can change the content format to email address which creates form validation which makes sure that a
user is typing in an email address and not some nonsense so we can set up these parameters to make sure that we collect
clean data and I can just delete that when I'm done with it but yeah date and time
Pickers so we can create really um interesting if we have a listing an Airbnb listing date and time Pickers
allow us to select an start date and end date uh and then we can say well that's 5 Days and 7 hours and then we can
create a calculation for price for a listing for that particular time period I mean it's endless what you can
do okay but let's now let's dive in and actually have a look at these visual elements and at these containers to see
what they look like and how it feels to put them onto the canvas okay then we'll get into the database and then we'll get
into the workflow side so if we go to visual elements first all right and I'm going to preview
this page and when I preview the page it's a preview of what it looks
like when the site's deployed basically the only difference being I have version test here uh which means that only I
have access to it okay so we have our text and with text we have text Styles we can drag and drop any text we like
okay so if I grab some text drop it in there hey nice to see you um I then have set up some
Styles and this also ties into SEO basically okay here's my SEO here I have an H2 tag for
this H3 all the way down to body large Etc I can also just detach the style and I can find a font that I really like
such as aeriel I don't use aeriel I use inter for most things inter but I can change this to anything I like s Sands
and so forth but aside from one of the things I teach basically is well there's two major parts of this yes it's how to
use bubble but moreover how do you build apps end to end what are the important components of app building what does
security look like what does styling look like how do build a coherent looking application using consistent
styles using a particular design system this is what I teach across my apps okay so it's not the case of oh I've learned
bubble now I can build awardwinning apps that scale to millions of users there are many other things to learn all right
many other things to learn um but obviously understanding bubble from the design workflow and database
side would at least get you to create functional stuff and then as functional well then you move on to things like
performance SEO uh Etc and guys don't don't let this put you off because you can be you can learn through one of my
courses such as beginners Camp takes some people two to three days to get through and they are learning or getting
an introduction to all of these Concepts within two to three days they have uh built a productivity app
dashboard with a lot of users uh working together within teams that's how fast it is so don't let
to put you up I'm talking about a real sort of professional standard does take a bit of time it's not just about bubble
but it's about understanding Design Systems understanding security and all the rest but no code will get you there
a lot faster than traditional coding so these are your visual elements all right I'm just going to show you
here so here your buttons look when I'm hover over a button we have primary medium primary large iconography we have
links so I can click on this link and it'll open up a new tab or it will link within the same tab here I have my
particular Styles um won't talk about that just yet here's an external link so Google
fonts okay just going to close these guys up here we have images
so uh and we have image rendering so we can allow users to upload um any kind of image here is one called betterfly
company I made up and here is a user image down here notice the shapes we can force shapes to be cut in the various
aspect ratios that we want um 32 square you know one: one we can cut circles we can have sort of rounded edges on a
square regardless of what a user uploads we can force all of these particular shapes uh so so it looks really nice we
can have alerts look what happens when I click on test alert this is an alert so feedback to a user that an action has
run successfully here is a video all I did was copy from um this Channel all I did
was copy one of my video IDs dropped it into the visual elements the the video visual element and now we have a video
HTML element uh here is a little piece of code a copied from stripe to enable payment services here's sort of
subscriptions $20 $32 if I hit subscribe that's actually take me off to stripe to ask you for your card
details amazing here is mapping guys look at this look at this mapping and we can and
I'm guessing you're asking can we show uh positions on the map properties that kind of thing can we customize it yes we
can and this is Google Maps bubble has a great integration with Google Maps you can do anything with Google Maps Google
uses Google Maps so it does most of your car navigation use Google Maps but you can bring in other API services such as
mapbox and build your own sort of custom mapping solution we can do anything around mapping love mapping and I think
mapping goes hand in hand or works really well with bubble so that's the visual elements
okay next down the list we have your containers so I'm it's going to bring up a little container containers page to
show you what containers are and if a preview containers bubble has a little debugger
bar down at the bottom uh which uh you use to help you diagnose issues but I usually just remove it um and here are
containers so container is a group within that container have some text and I'm just styling these containers they
can have background colors they can have shadows here is a repeating group of users all right so these guys um they're
in not they can come from the database or they can come from what's called an option set we'll look at that later but
basically I've designed once let me actually show you here here is a repeating group repeating group has a
data source I've just set up a temporary data source for this but I've only designed it in one area this is what I
designed this first card I designed this stuff and then I link through the data parent groups test data's display the
role email the image so I designed the first and I pulled in all the
data uh for the rest now you probably your mind is exploding here and you're thinking wow okay I get it
now when I first learned about repeating groups I then understood I see so Tik Tok is uh Facebook Instagram all of
these feeds they're not individually designed they're designed once small piece of code probably a few 100 lines
of code and that's it that's all you do you design the first one and it repeats million users you can search that data
filter it set two different dates whatever you like okay that's the power of rep
repeating groups bubble also has tables so if you want to display your data like you would in Excel spreadsheet bubble
enables that for us as well here's a popup I'm going to show a popup cool great you can run workflows in this
popup you can show data you can push data into it and edit data or delete data build alerts do anything you
like here's a floating group on the left hand side let me just refresh this page uh because bubble thinks I made
some changes so I had to refresh the page floating group left hand side we recognize this it's just like a
dashboard we are going to be building a dashboard in a bit okay A group Focus so this is if I click
on uh this is like a drop down so if I click on this image here we have a menu and we can run a button from within this
so these are containers containers are a way and all of these containers they differ slightly in terms of how they
display data but a container basically is a way to um uh group visual elements together all right and containers can be
within containers can be within containers nested containers and they can each have their own display uh
flexbox controls as well and here is a table so this is a repeating group great for like car
design uh here is a table well great for kind of a table view whatever you like and yes guys this is all responsive down
to phone sizes and I have a course called Flex Camp which is the leading course in the bubble ecosystem uh for
adapting your designs for mobile so that's containers what's next in the list if we scroll down we have
input forms one of my favorite so let's go to input forms notice some change in the page and I'm going to pre me the
page I'm just going to remove the debugger bar again all right yeah so I'm interacting
with this input okay email address so developer at build.io and then I can use this however
I like you know um and I can collect text integers you can drop in addresses here all types
of data that you can with code you can do with bubble no difference multi-line input for paragraph text all right for
paragraph text and it will grow as I type or I can choose it not to grow we will just scroll by on the right hand
side radio buttons checkboxes drop downs all right search boxes so if I
type A search I don't have data to search at the moment but if I did I could type Greg and could I could say
show me all user accounts where the first name is Greg or I could search for listings I
could say show me all listings in San Francisco within a 2 mile radius of where I am right
now slider inputs you know what's the age range what's the shoe size what's the pay
grade show me products within uh a particular price range or listings within a particular price range
with this particular slider input which has two bars min max Max values and we can take these mmax values
from the from a workflow and we can save them to the database or we can in real time filter what's on the page date and
time Pickers you can style this stuff guys this is just default out the box picture
uploaders file uploaders you can upload PDFs have user save PDFs and by the way this data is saved you might have a
question like which service does bubble use for the database they use Amazon web services
Ironclad banking services use Amazon uh super super secure within with their encryption all right so when you save a
PDF uh that is um you know has uh needs good security it will have good security you are the one in charge of setting up
that security bubble provides the means and controls for us to do that to granular ree where maybe you are a
company owner um and you have all of these documents but you can Mark Which documents you want to be visible to
which user based on permissions you build all the stuff out okay you build all this
out so we've talked about our visual elements we've talked about containers and we've talked about our input forms
or our inputs now when we combine all of these things together we get components which forms the basis of our UI our user
interaction our interfaces so let's have a look at building a signup form which is a collection of all of these three
things so here we have a signup form for a pretend company called collab this is straight out of beginners
Camp okay and we have a group grouping these elements together that group has a layout of column and guys we are going
to be building this from scratch in a second but I'm just running you through uh what this how the various elements
are coupled together basically we have a title which is collab text element a subtitle text element and then
we have our little input labels email and password as well as our inputs then we have a button at the bottom and we're
going to use this button to sign someone up okay so I'm going to go ahead guys and create a new page I'm going to call
this signup and I'm not going to clone it but we could in fact have a page that we
clone if we wanted to inherit some settings from that page but it makes a direct clone okay in this instance I
just want a clean white page and I'm going to run you through how to create this sign up form from a blank slate so
I'm going to go ahead and create that and I'm going to bring up my property editor all right property
editor and at the top we can see it's called sign up um and I'm going to call this
sign up and maybe we can say it's by Bill Camp okay so on the layout tab I'm going
to choose column you usually always choose column unless you're on a like a split screen
kind of layout with two columns usually a page layout runs top to bottom from the Navar at the top to the footer at
the bottom and it's a single column with lots of sections um in this instance we're just building it's going to be a
sign up group just in the center of the page the default Builder width not the page
width but the Builder width is 1440 actually I'm going to choose, 1400 this is just a bootstrap size from a
design system that that I've created and I think 1400 Works quite well this doesn't mean that it's a static design
it's fluid it will be responsive down to a mobile phone and it will be as wide as you need but it would always have a Max
width because you know big big screens you don't want your content spread all the way across
okay good stuff so let's have a look I'm going to just put this container alignment in the center all right this
means whatever object I drop inside here will be dead center first of all I'm going to grab a
group and I'm just going to sort of draw in a shape like this okay let's put it on the left hand side so I'm going to
move it to the center of the page there it is there I'm going to call this group
container this is the outermost group I'm going to um I've set up some Styles here so I'm going to give this a
style card medium and if we look at what this means on the group it means that I have a background color of flat color 16
on the roundness 200 neutral for the Border color and on the layout I have padding of 32 pixels all the way around
okay so if I click away you can actually see the border now I have got some settings um I have some view settings
which say show element borders so if I turn that off you basically see what we've dropped in the page this group
here now now we have to jump into the group and decide what is a layout and what is
the distribution of content within the group if I up dropping in the logo some text some inputs is it going to be with
ways or top to bottom and we want top to bottom so I'm going to set that as a column top to bottom okay put that back
in the center now it's not going to be fixed width of course because web pages aren't fixed width they're always fluid
so we would set a Max width because I didn't want this group to grow too wide it will look silly if our inputs are
super long so I'm going to set um a Max with the 480 but no minwidth which means it can just squeeze down to fit into a
phone as well so I'm going to uncheck the box for fixed width I'm going to set a Max withth of 480 remove them in width
and the Min height doesn't really matter for now I'm just going to make this a square and the Min what happens is I
will Design what I need within this group and then the height will adjust if it needs more space um and if there is
some vertical height left over or then I can make the Box hug the elements and I'll show you what that means after
finished building this okay so we need we need that logo all right so I'm just going to jump into
my data I'm going to go across to file manager because I have this logo here it's called
origin and I'm going to copy it and I'm going to go back into the design tab I'm going to grab an image
and I'm going to drop it in now of course I could just upload an image but I'm not too sure where it is so I'm just
going to paste this in and there it is there now it's too tall guys so on the L tab I'm going to choose a width of 48
pixels part of my design system part of bootstrap standards for uh element sizes keep aspect ratio fixed I want it one to
one it's a perfect circle basically and I'm going to align it horizontal in the center okay so that's the first thing
I'm going to do and then I'm just going to call this image logo next I want the name of basically my
company um so we can pretend like the name is collab so I'm going to type in collab collab stands for collaboration
it's part of a course I teach now I'm going to give this a heading style of four just personal preference I'm going
to put that in the center as well in terms of the image element now if I let this image element span all the way to
the Edge by removing any kind of Max or fixed widths then this naturally the text naturally would be in the center so
I'm going to head over to the lout tab I'm going to uncheck fix width and boom in the center obviously we have a
vertical spacing issue this is touching this so back on the group container the first element we put on the page I'm
going to choose a gap spacing of 24 and GAP spacing basically means um that anytime we put an element in this group
container it will always have 24 pixels of spacing and if we want to change that well
then the elements that we want to reduce the spacing between which we'll get on to uh we then have to
group those in a new container and then apply Gap spacing within those so it's a bit like padding a margin but Gap
applies to the entire container not just one instance so it saves us a lot of time I'm going to grab some more text
because I want to subtitle I'm going to say ready to jump in question question mark
sign up below and this is subtitle text so I'm going to choose a body dark medium I'm going to choose
alignment in the center and I'm going to choose a slightly lighter color CU color and hierarchy uh play together and again
the text element is too short so I'm going to let it span edge to edge but unchecking on the layout tab fix width
and removing the Min width and removing the height as well so you can see that the text element is taller than it needs
to be because the text is not as tall so if I remove the Min height and have fit height the content checked then
basically it fits to the content within all right and let me just show you what happens so if I take it onto a new line
you can see the text element will grow as it needs to all right that's flexbox kicking in now when I talked about your
Gap spacing being 24 um I'm going to show you how to then reduce it between the two text elements
because like elements are together okay text needs to be closer together but further away from the logo when it gets
down to the inputs they need to be closer together but further away from the header text so I'm going to just
simply highlight this text here collab I'm going to highlight beneath that ready to jump in and I'm going to group
that in a new container so now we're talking about nested containers and this is how you build it's just nesting
containers and adapting the layouts of those containers that's it so now I can head over to the layout tab check apply
Gap spacing and then choose 12 which is half of 24 okay this is going to be called group header and as I'm building
on the left hand side I can uncheck only show hideable and I can see the hierarchy of the group container image
logo and then we got the group header and if I expand group header now we've got text collab and the subtitle text
perfect let's continue now we need um we need the inputs with the labels so let me create the label first I'm going to
drop in some more text and I'm going to say email actually the casing let me say
this email like this and then I'm just going to change the style to body small and obviously you can see the text
element again too large so we need to adapt it so that it just sits nicely uh next to the text so I'm just going to
quickly just get through that like so okay time for our input folks because we need to capture an email address so when
you sign up to Bubble by minimum you need two things you need an email address and a password
yes there are other authentication options such as magic link when you put it in your email address and click a
button beneath it that says send verification link you go to your Gmail or your email provider you click a link
and that actually logs you in so some people are moving to that because it means you don't have to remember your
password your customers to your to your site and also you can log in with social Gmail Twitter that kind of thing social
logins also fairly popular but anyway let's type at the placeholder here uh into your
email and I'm going to change the content format to email just in case someone doesn't type in an email there
this doesn't verify whether the email exists and there are ways and means that we can do that it just makes sure that
someone does type in email and not their first name by mistake this stuff happens this is called form validation and
because we are we learn to be professional developers we need to take note of all of these things we always
need to help the user as much as possible okay okay on the lout tab I'm going to let the span edge to edge and
I'm going to set 48 pixels to which it already is okay these need to be closer together the label email and the input
so I'm going to right click group elements in a column container and then for this I'm going to choose eight row
Gap bit smaller now we have a new group so we need to label this properly that's group email and then guys what I love
about bubble and to save time and actually it's a good method is just copy and paste components that you've created
already so you could call this a component cuz there two elements together I'm just going to go copy paste
and now we have our group email copy which I'm going to change to group password email I'm going to change to
password and then enter your email I'm going to say enter your
password okay we could also do something like this I could also just add some Dots
here or maybe just keep it as dots all right but then I will just change the title here password
because we're going to need that soon and then the content format is password so this is a
great uh use case for Content format is when they type the password in you know it'll be the dots they won't be able to
see what they're typing okay and but I do want at the moment the Gap spacing is separating all
of these groups down the page I do want group password and group email together together closer so I'm going to say
group in a column we're continuing to Nest here guys and this time it will be 12 perfect then this new group will be
group inputs so if we have a look on the left hand side we can see that we've got our group container group header and
then our group inputs and within group inputs group email and group password and now all we need is a button folks
I'm going to drop in a button first of all I'm going to say sign up and I'm going to change the style
which I've set up already to primary large and quite simply span it edge to edge by removing the fixed width
removing the Min width and also making sure that the Min height is consistent between my inputs uh and my buttons so
48 pixels bootstrap standard I teach bootstrap across all my courses fantastic now guys how do we
make this bad boy work all right so let's look at that so let's edit the workflow so what we'll do very simply
bubble gives us all of these options navigation payments analytics plugins we're just going to choose account and
the first one sign someone up you need users in your application for it to be an application and now this is just a
matchmaking process okay so bubble's asking for an email address so we feed it the email address from the input
value so if I just type in email because I named my inputs so input enter your emails value okay it's always going to
be the value now I can type password and then point to the input password value we're going to feed that stuff through
the workflow and then into the database and they're going to be signed up and logged in on that button click and then
we have some other options here such as require password confirmation which would be a second password input box
don't feel like we need that in this day and age uh we want to keep it as small as possible and then we can also send an
email to confirm an email bubble that's just a built-in workflow by Bubble you can choose to do that if you like to
confirm that the email address is ready uh real sorry but I actually build my own pin related one which I feel is more
familiar ux all right send them a pin randomly generated then they have to put the pin in If it's incorrect I don't
then I disable their account on three tries and then we can add more Fields here so maybe you wanted to collect
their first name or their logo or their store name you can do that as well within the same form I prefer to break
forms down all the sign up process into multiple parts mult mul form multi-step form if I'm asking for a lot of
information at the very beginning which is you can put some people off so we'll keep this simple so we're just going to
go with that and then we have to think logically well what comes after clicking that button because they don't know that
they've been signed up well something needs to change so why don't we just point them to the test page and let's
have a look at that so navigate goto page uh test and we can pretend that that's our dashboard that they'll be uh
signed up and logged in to then start using okay so let's just put in some dummy details
here we're on version test so it doesn't matter email email.com form validation kicking in
here perfect and let's sign them up okay so here we are guys let's jump into the
data and let's have a look here is a row in the database here is a user they have an email address and this is their
created date and time and they have a unique ID as well which we will always use the unique ID is basically make sure
that every single Row in your database is unique okay because sometimes if it's like product data it might not be unique
there mult might be multiple stores with the same name and multiple products called sneakers Nike sneakers so unique
ID is very important all right guys so that is the sign up process and the build process
for something like a signup form I mean that was super super quick less than 10 minutes that's how fast you can get
started as well okay and now we're going to go to the dashboard page so if I grab text guys and drop it in here and look
at it's going to be at the bottom here check this out I can add Dynamic data I can say current user which is me
I'm holding the mouse I'm the current user just delete this quickly I can say current users
email check this out if I refresh the page look at this I'm logged in and I'm looking at my data email at
email.com so it's through this property editor that we Define what data to pull out and show
from the database okay so database data comes through this ad Dynamic data in terms of displaying Dynamic data within
elements but there are many other ways to display Dynamic data such as repeating groups tables even through
just an image element should that image be static which we did this is the static element here the bill Camp logo
or should it be dynamic should it be dynamic I'm going to quickly cheat in the data I'm going to open up this
pencil Tab and I'm just going to upload a users avatar from a developer standpoint your users will never see
this part of the app okay this is just this is obviously the bubble editor so I'm uploading an image
here's an image here I'm also going to cheat here because I'm testing uh I'm going to say Daniel
Williams now I'm going to save this and bubble no updates the database with what you've just put into these inputs and
now we can display more stuff so now I can grab an image drop it in it's obviously massive so the first thing we
need to do is set an aspect ratio and just 32x 32 I'm going to group these two guys
together this image uh and the reason why it's in the middle is because I've set a a column layout here in a
particular style space between but I'm going to get this image to sit next to this email down at the bottom
highlighting both of them group elements in a row container and now they're down here while I'm up there sorry while I'm
down here I'm just going to create some space between this text and this image element which is 12 pixel pixels on the
column and on this I'm just going to responsively fix this uh text input sorry this text
element there we go put that in the center all right so now I'm going to show you that we can pull this
data by Daniel Daniel is logged in here's his email address and by the way yes we can actually change Daniel's
email I can say that daniel. Williams I'm just going to say Daniel for now obviously we want to be building the
tools to be able to do this uh within like an admin dashboard or for users to do this themselves
okay but now I can um click forward slash and I can say current users
Avatar and run mode rendering I'm going to change to zoom so it cuts the shape that I want down here because I'm going
to scroll down and I'm going to set the roundness to 32 as well for a perfect circle so if I
refresh here's Daniel's image here's Daniel's email address okay so you can see that we built some UI that UI
comprised of containers to hold everything together and allows us to set the the layout it had an image it had
text and it had input and it had a button we collected data through the inputs and
the workflow that workflow saved the data and created the user account in the database and now we have created um a
dashboard we've dropped some elements on the page and we've instructed bubble to go fetch the current users data such as
the image and the email address okay so that is the create and read part of crud create read update delete that's what an
application is so we can we can create data save it to the database and we can pull it of the database as well and we
can display it for Daniel to see now can Daniel edit this data yes he can can he delete himself and delete his online
store or whatever it is that we're going to be building yes he can do that as well uh there bubble creates a delete
function as well and we can create multiple things at once we can delete multiple things at once we can edit
multiple things at once and we can run things such as backhand workflows to do the server side and not in the browser
it's getting a bit more technical far too technical for this particular course but uh we can do all sorts of stuff here
we can save data from external Services find an API service that shows the weather where we can download the
weather for the upcoming 10 days put it into our database and display it to a user through a repeating group build
your own weather app or you canot even touch the database and just pull it in from the API and just display it
directly create like a direct link to this external service amazing stuff let's actually go back into the design
um because you've seen me sort of lay things out a little bit there was a row there was a colum let's take this a bit
further so if I go to I've got layout here layout and I'm just going to change this to
layout now I've created a container this gray box and I've created a container on the left container on the right now in
real life these containers would be transparent or white or gray or black okay I'm just giving them colors so you
can see individual containers let's have a look at over here just to prove that it's a
container this is group a that's Group B and I can put text inside group a there it is there and I can change the text to
White uh and so forth so just so you know that these are containers I just want to show you how layout
works so I can say um on the parent group container because these are now nested I can go to the layout tab
currently it is a row a row means distribute data on the xais column means distribute data on the Y AIS top to
bottom so if you think of in the context of a page a page would always be top to bottom Navar hero section and then you
have your content sections and your footer at the bottom that is top to bottom but Within These sections such as
this gray piece is a section A lot of your data is distrib left to right and then it grows on a desktop left to right
you have sort of columns then within the columns you can distribute data again do you want to distribute it top to bottom
or left to right and this is how we build layouts just by using columns and rows there are other times where where
we would use fixed and aligned parent under container layout here they are here but it's pretty rare okay rows and
columns form 99% of how websites are built but I can just instruct a different layout here so it's a row
distributed left to right I can go top to bottom if I change this simply uh sorry if I change this from a row to
column column to row and guys this is essentially how you build
interfaces you set the layout first with your containers and then you put your elements inside these containers okay
so now if I started with this design a row left and right then I would change it to a transparent background here's
group a again okay there's Group B and now in group a I can now set where we had a row with group a and Group B now
in group a I've set a column here it is a column I can change it to a row if I want it it wouldn't look very good and
there's some constraints screwing up the design there but just to show you that that's what we are doing just
Distributing left to right or top to bottom and just nesting containers all right and there basically
that's an image a group with an image as a background if we think of it in context of a Navar well nav bars usually
have a logo on the left usually links in the middle okay home about pricing FAQ buttons on the right
three column layout that's the common thing with a nav bar here we are here here's the nav bar and and if we scroll
down we can see image on the left uh pricing sorry links in the middle buttons on the right hand side so
the layout would be a row okay the layout would be a row and then within rows and within columns we have
container alignments for how we want to distribute the content within the row do we want all the content within
the row align to the left align to the center align to the right do we want it push to the edges and the center do you
want the space space between the elements the same this is how granular we can get with rows and columns can
really really and then we also have padding and margin to push things further apart and creates space around
things super cool stuff so that's the layout if I go to the spacing side um now this is kind of
a concept that falls outside of bubble you don't need to know it but understanding Design Systems will get
you very very far as a developer and that's how you create um beautiful interfaces now systems exist everywhere
guys Design Systems or just systems uh what if a car manufacturer didn't have a system what if um uh Tesla just said to
his workers uh yep you you guys decide on the wheel size let's start with a wheel size of width um 750 cm and then
the first guy thinks great so the wheel size is 750 and then it gets to the next part of the factory where the guy said
where the guy couldn't remember what the wheel size was and he said was it 750 or was it 850 all right I'm going to make
this component and it's going to be 850 then he tells the next guy that is 850 and then that guy starts working
with 850 you can see where the disparity and the chaos starts to ensue Design Systems ensure
consistency uh with your procedures okay and that means that you need a design system later on after you've learned
bubble to be able to create consistent designs through your app button sizes for is a is a classic or butt button
colors is a classic someone finds a color with a Color Picker and that's the button on this page they don't create a
style because they're eager to build they go to the next page dropping a button and they think what was the color
oh I think it was this but then the it's slightly off and they still in create a style and then they go to the next page
drop them in the button what is the size was it 44 48 I'm too busy I'm going to keep it 44 once you've deployed the app
your user is looking around and they can pick up these subtle differences and these subtle these subtle differences
become huge differences uh as you begin building out your app and this is why I designed Flex Camp to say guys you need
a system this is why when I teach SAS Camp uh we create Design Systems from the very beginning okay so what I tend
to do is just create my own spacing system sizing system and this is what it is this is called the fourpoint system
that pretty much all developers use moreover it's more of the eighto system these days but you can see these numbers
these are the numbers you use in terms of layout spacing padding margin button sizes even text sizes and in terms of
radius which is the cor the um curved sides I tend to use 8 12 16 24 and that's basically it and then working
Within These constraints is far more simpler easier numbers to remember but hopefully you have a um styling system
where you don't even have to remember these numbers but you wouldn't have radius eight on this box and then you
continue designing a bigger box or container and then you use say 14 or 13 or kind of an odd number you'd always
Define a particular system and it's much easier to work and more consistent looking uh and more coherent all
right the next concept I want to do before we get back to building in our dashboard is temp data
okay it's two more Concepts and then we're just going to build for the rest of this course and temporary data is a
way to to interact with data on the page with data that doesn't exist in the
database earlier on I talked about we're creating an ABNB experience where someone searches for listings in London
available listings between two dates then they click on a search button and then they get taken to the next page
where there is a map and listings we don't only say that to the database that's called temperary Data in fact
that's called a parameter which we're going to look at and temper data is a way to enable that functionality they
have started a search we're taking them to the next page to show them the results that's temper data there are two
types of temper data one is called States one is called parameters let me show you the difference so the way State
works and this is something you create yourself okay you can create a state for
functionality such as toggles I've clicked on yes to turn blue I've clicked on no it's turned black I created a
workflow for that to run so if I click on yes I'm setting a state and then I'm saying to this yes button or no button
that if the state exists conditionally change the color okay don't worry if you don't get
it straight away we're going to be actually building this in the dashboard or I'm going to show you practical
examples of this another good use case for states is a state list here where I can click
checkboxes now when you click click checkboxes on other sites there's no data being saved it's just feedback the
data is saved on a button click somewhere else so you might have a form that form might have toggles yes NOS
checkboxes radio buttons inputs um dropdowns multi line inp puts a form might have all of this data
together in one container with a button that says save at the bottom that's where you can collect data from a state
from a parameter from an input from any kind of uh data source you like you collect it later on but you have to
enable this feedback for the user if they click on a yes toggle something has to change to show that they've clicked
on it that's a good use case for a state okay now in terms of a
parameter what I've done is I have get location from page URL okay so I have instructed the map to look for the
location for to look for a location in the URL in a parameter parameter is a key value pair
you set the key I've called it location I could call it cupcakes if I like it doesn't matter the main thing is linking
a data source which is a parameter with an element on the page that's the main thing here so I've
already gone and set the data source marker address to a parameter that parameter is called location so if I do
this if I anytime you see a question mark okay anytime time you see a question mark that means a parameter and
if you do a search if you search for flight on whatever sort of page you want any kind of flight service you'll see a
bunch of question mark something equals something something equals something you search on Airbnb listing
equals start datea equals price range equals those are parameters that's temporary data that's a way to not have
to save stuff to the database just give the user some results on the page I'm going to do this right now I'm going to
cheat I'm going to say location all right equals and let's just pick um this
click pick Sydney just randomly now watch the map boom now we're in Sydney that's how
parameter works now parameters I could also I could have location equals Sydney and start date equals July 17th 2024 and
end date equals July 24th 2024 and then I could Point um my calendars to that parameter temporary data
and I could save that search with the save button at the bottom so I can come back and search for that again later I
could save that search to the user record so I'm at the moment looking for um a new house uh with a company called
right move in the UK and I have saved my particular um the attributes I'm looking for in the next house which is it's got
to be certain number of rooms it needs to be slightly rural I want a bit of land potentially out buildings I want
off street parking so I have all of these saved to my user account but when it came time when I when I was trying to
figure out the search I had uh location I had a search box um and then had a price range with slider inputs I then
had number of rooms at the drop down and then had checked a box that says allow pets because my two dogs Frank and jery
um you know that that's something that that I need to be able to take them to for the
next property um I I selected a checkbox that said off street parking I selected a particular distance from where I live
right now and that's all saved and I saved that with a single button click okay so um so the temporary data gave me
the feedback that I was clicking on stuff writing in input boxes and then the button click saved that to the
database so the next time I can come and that's saved to my user record and can just show me the result straight away so
that's temporary data now you don't have to use temporary data uh for this map of course I could be
pulling this map from something saved in the database bubble's fairly agnostic with
where it gets it data from it could get data from an external s uh Source such as an API it could get data from your
own API connector could get data from your uh internal database on uh Amazon web services the built-in database could
get data from a state it could get data from a parameter I can save a State location um and we're going to be doing
we're I'm going to show you how to create States and premises very shortly when we move on to the dashboard which
is the building part so that's temporary data guys you see temperary data anytime you interact with something on a web
page and it gives you feedback such as changes shape color something changes that's a parameter okay or a state sorry
that's that's a state um but parameter is obviously the temperary data which you can can then use difference between
par when would you use parameters and when would you use States um when you refresh the page
states are reset let me just demonstrate so I'm going to click on yes and check these three
boxes notice Sydney down here if I refresh the page the states have been reset now it's no without checkboxes but
we still at Sydney so parameters persist meaning that they don't care about page refreshes because
um the data exists in the URL unless I change the url the data will continue to exist on on a page refresh so that's one
of the main differences but there are sort of use cases you can't pass States between Pages you can pass parameters
between pages so I'd use parameters to collect data and then send it to um another page uh other than that i'
probably use states to be honest uh and states you can hold temporary data as States you can create rows of data and
not save them to the database but save them to a list uh an invisible list in the page and then on a single button
click save all the data you need to save to the database including that list that you
created okay so that's temporary data now guys the last thing I want to cover um in terms of Concepts is breakpoints
okay and breakpoints uh we can see in the responsive design tab 1200 is a breakpoint 992 768 320 but you create
your own break points and bubble is building out a way to handle breakpoints a bit better but just for your
information um this is the breakpoint system I use and this what do break points do at a certain page width you
can instruct text to change sizes inputs to change sizes padding to change to more minimal or larger padding change
the direction from a row to a column break points simply are a way to consistently change the design and adapt
it to VAR ious screen sizes that all that's all that break points too but we won't cover it too much again I have a
course called Flex camp that covers this to a professional standard and before we get into um
building up this dashboard I wanted to show you one other thing in the data tab or two other things we have our data
types these are basically our tables so we' have like a user table if we have products we would have a product table
whenever you have um a product obviously needs a title price it needs all sorts of fields whenever you have a collection
of fields you would create a data type for it so user data type product data type listing data type your two-sided
Marketplace you create transactions between users you would save that to a transaction data type and decide what
kind of fields make up of this transaction you would have your uh homeowner uh you would have your visitor
you'd have your dates for this transaction maybe it's called a booking doesn't matter point being you'll have
all of these various tables that collect uh data that belongs to the user or the product or the store or the listing or
the booking um and at Bill Camp I have lots of different data types I have user data type I have courses data types I
have data types for lessons that are attached to sections that are attached to courses because what is a course a
course is a list of sections section one what is a um what is in a section A list of lessons so I have a list of lessons
in a section and I have a list of sections attached to a course and then courses have you know course has a title
has a price number of students uh number of sections so you
kind of you'll you'll become comfortable with having all these separate data types that all sort of work together and
cross reference each other and it's actually quite basic once you um understand uh how the sort of structure
works we have a privacy tab um and bubble creates a first privacy for you and privacy is a way to secure data on
the server so you would never have if you don't set a Privacy Rule on a user data type that means all data on your
server will be accessible by someone that understands developer tools in the browser uh anyone with sort of basic
development experience will be able to access your data any data that's downloaded to the browser that is okay
so privacy rules are very very important it's something I cover in the beginers camp course uh I'll cover it in all of
the courses but that's The Beginner's Camp course gives you a good overview of how to secure your data and how to set
up your rules so that if you're working together so that you can see your own data and your colleagues data if you're
working in a team but other teams don't know that your teams exist because maybe we're building Salesforce or or pipe
Drive or you know some kind of productivity app or notion right so I use notion I don't know who else uses
notion they've got privacy rules in place so that I only I can see my data and my team can see my data so you can
get really granular with data access through privacy rules okay so privacy rules is server side uh security for
your app and there something that you'll have to understand and set up uh before you deploy your app then you've got your
W data and this is basically our view into the database with our various Fields then you have option sets option
sets are great um option sets don't exist in the database they exist in a users's browser is for publicly
accessible information I use a good example of an option set is they are static lists you can update them edit
them but think of option sets as static such as a list of countries that isn't going to change so if you want to ask
someone which country they're from you'd set up an option set it would be called called
country I would create that and then I would start uh America I know this would be USA I'm just sort of jumping ahead
I'd create that I create England and then this list I can then populate any element or input form that
takes a list of data such as a drop down takes a list of data um repeating groups takes a list uh tables take a list and
we can also filter those lists so that's what an option set is um and then you have your file manager and this is
anything you've uploaded or a user has uploaded this is where you'll find them so I've loaded this Daniel Buckley image
I can click on this PNG and there's Daniel's image I can right click save that if I want
to and then you can yeah you can delete them if you want or you can search for them or you can upload more data here if
you want to be uploading um in the back end okay so guys now we're going to get to this
um dashboard and the purpose of building what I'm going to be building uh is to
show you how the build process basically so I've already set up like a scaffold for this I'm going to actually call it
dashboard going to change the name of this page here so I'm going to bring up my
inspector this is the property editor and I'm going to call this dashboard this is how I
change uh the name of pages just going to refresh this again okay so I've already done some of
the design here so on the left we have a floating group what a floating group does is enables you to change the Z
access uh the Z AIS of a container so something floats above the page so when you scroll down many websites and the
navigation bar remains stuck to the top like sticky at the top and all the content Scrolls beneath that's a
floating group and in this instance I've set up a floating group on the left because this is going to be where we set
set up our menu okay so what we're going to do is this so I'm going to be able to demonstrate many things uh and in the
beginners Camp course this is what the course is about it's about building out a productivity app where users can
create projects where they can create tasks attached to projects where users can work together as a team where a team
admin owner can manage their data users Etc and through the creation of a productivity app is I get to demonstrate
basically almost absolutely everything that you can do in bubble okay um but the most important thing that we're
going to demonstrate today is create read update delete as well as temporary data design and layout and the various
elements around repeating groups okay and text elements and buttons and popups so let's get
started so I'm going to just show you a basic version um I'm going to show you what we're going to be building
something similar to this this is actually The Beginner's camp but obviously that's uh you know you can do
their course at build Camp we're just going to create a part of this so with the beginner's Camp uh you know you
would build your marketing page you would build authentication sign up Etc but this is the one I actually want to
build um so this dashboard layout is similar down the left hand side we have image we have these buttons here so if I
click on this button it shows what's on the right hand side okay and there's one called projects and that's what we're
going to focus on but in the begin's boot camp you would be able to learn how to build all of this stuff here is a
table with data progress bars but this is what we're going to be building okay a way for a user to create
a project and then display the project as a card and through that process we will be creating a project with this
popup um and then in this popup we would also would be able to save it we'll be able to edit the data and delete the
data so that would be enough for you to get kind of an end to an experience of create read update delete and working
within this kind of U dashboard layout okay won't cover the marketing Pages the landing page is far more simpler there's
no real interaction it's just showing data okay so I'm going to um I am going to First grab some text going
to drop it in here I'm going to say projects okay layout tab I'm going to
remove the fixed width and I'm just going to style this slightly um actually that's
okay then I am going to right click and say group elements in a row container okay because
is if I just reference this figma file what we trying to build is this and this has three elements so the
container is the gray part the part we click so it's similar to a button but with buttons you can't put iconography
into buttons with bubble just yet you can through a plugin uh but I just want to demonstrate sort of the Native
abilities here so I want an icon I want text and I want this little chip icon here little right arrow carrot icon
so that's why I put it in a container and I'm going to call this container group project and then when we click on
group projects that's when we get uh to change the view with a parameter I'm going to set the height of this to 44
okay and then I'm going to take project I'm going to put that in the center next I'm going to grab a material
icon and I'm just going to sort of draw it in guys so you can drop it in but often it's too big but I'm going to draw
in a shape so all I'm going to do and then I'm going to give it an icon now I think it's called
layers ah there's actually an issue with material icon at the moment with um with this version of bubble I'm using
so I'm just going to delete that and I'm going to rather use an outline icon which
is which is hero icons so here's an example of a plugin I'm using called hero icons
someone has gone ahead and created a little package for bubble uh and I'm going to use it now I'm just looking for
something that represents a project okay and this could be anything sometimes those four squares look quite good let's
just see what we have to work with here could be like a folder but I want to follow convention
to a degree if I can what I'm trying to figure out is the naming convention that they would use table
cells no let's just choose ah here we go squares 2 * 2 so
I've just copied that wording and I'm just going to paste it in here and there we go I'm going to give this color I'm
going through this quickly guys and I'm going to choose 24 pixels um all the way around bootstrap standard and then I'm
also going to look for the arrow the right arrow put that sort of carrot icon here
Chevron so some people call it carrots c a r e t some people call it Chevrons I prefer Chevron I'm going to copy and
paste this icon here let put it to the right hand side and I'm going to paste this in say Chevron thank you very
much now I'm going to take this group project and this guy at the top this group B I'm going to write click group
elements in a column container uh why didn't that work group
content so what I'm doing is I'm just looking at the position R Group
G so this is the element tree and I'm going to rename Group G to uh just group content and I'm going to go down and say
reveal an elements tree and bubble then opens this up to show you the hierarchy and structure of elements within this
floating group so I've got a group b over here that's in group content and then I've got a group E over here so
group E will be called group project and I'm going to take group project and going to drop it in group
content and then I'm just going to reorder uh Group B at the top yeah down
there perfect so group content at the top row gap of 48 that's perfect all right so let's just get back to this
clickable uh element here so group project that needs some Gap spacing I'm going to choose um choose
12 and because we are on a row layout we have you know icon on the left project in the middle and button on the right
hand side and you can see how this project uh text element which is different to the text inside the element
is here is the container put the text inside and then decide on the behavior or the the display so if I say fit with
to content the text element is fitting with to the content within and if I add
letters here you can see how it grows but I'm just going to let it grow all the way across to fill up all of the
space and this is Flex box kicking in here so with flex box I've said look I've got a container I've got three
elements these left and right elements are fixed basically 24x 24 but this text I have no Max width no fix width no fit
width content therefore it's allowed to grow within that container that's what I want now I also
want um a border here basically uh so I'm going to choose some padding Left Right padding of just 12 and 12 because
I want us to change col color using a parameter uh once it's been clicked user feedback okay now that we have that
guys now that we have that I'm going to run a workflow on this bad boy here I'm going to add workflow and I'm going to
say navigate go to page this is just how we change parameters I want a parameter that says V or view equals projects
because we're going to stack uh all different views on the right hand side if I go back to this figma file
when I'm building in bubble this would be the page and I would have the projects group over here then maybe
underneath it I have the task group but it's all collapsed it's all hidden and collapsed and that vertical height is
removed and I can we're going to be showing and hiding either the projects tasks here's another one home view on
the right hand side here's another one members view all of those are stacked when we build but hidden and collapsed
and we use param is to change the view so if I click on members I want to see the members view if I click on home I
want to see the home view so the destination basically is the same page right we're not actually going
away from the pages but it's within this action that I can say send more parameters to a page this is where I
give it a key I'm going to say V for view it's just for my doing no one cares what it's called it could be called
cupcake doesn't matter um and then I'm going to say projects okay so let's just test this
this I'm going to refresh the page here's projects if I click on it V equals projects but no feedback to the
user so let's work on this parameter on the design tab let's do this let's go to the conditional tab guys this is
something new now so we've talked about temporary data we've talked about the appearance styling color form shape
layout layout tab is over here this third tab additional statement and this allows us to make a change to something
visually or to show and hide elements conditional this is a good conditional if current users admin is yes allow them
to see this admin related data if current users uh role is uh viewer but not
editor don't don't show this button hide the button hide the button that says create data
this is something I teach at beginners camp we use conditionals on condition of me having a role viewer and not editor
you know either show and hide this button in this instance we're going to say on condition of the parameter V
equals projects then show the project view okay the way we do this is we say when and I'm going to say get for get
data from page URL and then I'm going to say the parameter name is V I decide what this should be and then I'm going
to say is under operators I'm going to type with my keypad projects enter then let's change the
color let's say just going to go to the parents tab very quickly and I'm going to set a background color that
matches um what is the color here neutral 100 okay so I set up a style of flat color
neutral 100 I'm going to say now change the color background color from neutral 100
to neutral 200 which is slightly darker the other thing I'm going to do is I'm just going to give some border
roundness here of um eight so if I refresh the page because this conditional statement is true V
equals projects here it is again on conditional statement get V is projects if I refresh Watch
What Happens here boom now if I change projects and I say
home what what happens to projects not highlighted so this is a basic understanding of parameters okay basic
understanding of parameters I'm going to click on projects again now the right hand side
the right hand side I've set up a group here already now I'm going to say that
um I'm going to sh say only show this group when get data from page URL get V again
is projects if that's the case don't change the color or anything just this element
is visible yes and don't show it by default this element is is visible in page load no and collapse when hidden
and what I'm teaching you here is something you'll be using all the time okay I'm not covering edge cases in this
course I'm covering a a repeatable process that you'll be building with over and over and over this is how you
build a dashboard parameter for views parameter to change the condition of something to give feedback to a user
that something's been clicked okay so I'm just going to drop in some text here this text is going to
say project [Music] and I'm going to change this to maybe a
heading five perfect okay so if I refresh the page now I'm going to remove question mark V equals projects let's
refresh the page do you see how we can't see anything here nothing here but here's
this group group is called this group projects well now we can't see it because on the layout tab remember I
said that on page load this element is visible in page load no it's not and collapse it when hidden if we didn't
check collapse when hidden it would create this vertical space uh that would be problematic so it always want to uh
collapse space but I've said on condition that get V is projects then show
it so let's refresh the page click on the projects button and here's the group so that is basic well that is how
you build dashboard navigation guys you've learned it already what is stopping you from starting a bubble
journey and if you want to get started beginner Camp is where you start okay that is the leading uh beginner's course
for getting into bubble okay let's let's create some data here now before we create data um we
actually need to create a form don't we we need to create a form so I'm going to create a button I'm going to put this
button over here and this button will say um create okay and I'm going to set up a
style attribute of primary Lodge I went ahead and did this before I started this course and I want the button on the
right hand side okay so I'm going to click on the create button I'm going to click on projects right click group
elements in a row container going to call this group header now on the layout tab I want the
button on the right hand side we're currently within a row and the container alignment is left so on this this group
header the container that contains the Creator in the projects and by the way the projects I'm going to make this a
bit tighter the project um text elements when to remove fixed width it's a way to push the button to the right I'm going
to show you another way removement width removement height and check fitwith to content okay so if I go back to the
group header I can change the alignment here guys look at that but the one on the right hand side cord space
between this is where I can uh push the elements apart space between lovely stuff on this create button um on the
layout tab I'm going to remove the fix width because I want the button width to adapt to the text within so I'm going to
remove the fix width I'm going to remove minwidth and I'm going to set fit width to content so
the button must fit width to the content within which is create and the button will grow if I add more
text perfect now we need a popup so let's do this let's hit the create button show a popup
and then drop in the various elements we need to save data to the database and then we'll talk about how do we display
this project data how do we edit it how do we delete it all right so let's do this let's grab a popup and I'm just
going to click and I'm going to just drop it on the page like that okay I have a default style for this
popup popup a I'm going to call this popup project okay and then I'm going to grab some
text I'm going to drop it in um actually the first thing I need to do is I'm going to go to the layout tab and yep
it's set to column wait what am I on here sorry in the popup let's set it to column going to add Gap spacing of
24 and with popups you do want a Max width you'll never want to fix withth because you want a mobile responsive so
I'm going to set it to 480 a bootstrap standard I'm going to remve the Min width and the Min height
320 I need something for now so I'm just going to do that okay this text is going to
say uh project and I'm going to give it a heading
six I'm then going to remove fixed width Min width Min height all right let's get into the nigr of a project now so a
project probably needs an image just the way we're designing it let's let have a look at beginners camp and just see how
I designed INF figma first this card let's do this let's do this card here this is figma by the way it's um
it's a probably the leading design tool I tend to use figma for uh designing the UI the single
source of truth I don't just design in bubble this is because I come from an agency background where multiple people
had to look at designs and then build stuff in different pages simultaneously you don't have to use figma but it is
something that I integr into my courses because it's a professional tool and the figma community is probably 100 times
the size of bubble so there's many career choices in there anyway we're going to do this we're going to ask for
um an image just so we can render this card View Title and description that's all we're going to do guys we're not
going to add users and all the rest because then this YouTube course will turn into a 10-hour course and I've
already created that at Bill camp. okay so we're going to we want to display images right so I'm going to we
need an picture up loader I'm drop in that picture up loader I'm going to remove the fixed width and I'm going to
set it to about 200 and I've already set a style here click to upload an image then I'm going
to grab an input me drop it beneath this will be called um add a title that will be text and I'm going to check this box
that says this in input should not be empty so I'm not going to allow a user I'm not going to allow a workflow to run
unless I put in a title form validation all right form validation very important on the layout tab I'm going to let the
stretch edge to edge and then description I'm going to add a multi-line input so it's paragraph
text okay yes you can constrain the amount of text someone can put in here or you can just let it flow and then you
can con truncate the text for the card view so all the cards are similar height and then show the f description in
another way that you decide okay the height I'll usually make double the height of a standard input
which would be um what is this it's going be 96 Min height
96 the minimum height should be 96 then we need a way to save this so I'm going to click button I'm going to
drop it in the input and I'm simply just going to say save and this is going to be a button
large okay I'm going to let the spand just for my creative Choice edge to edge you can
make it smaller if you like I like a nice big save button all right guys so if I click on
Save now if I click on save so add a workflow uh what am I saving here I'm saving project
data do we have a project data type no we don't so at the moment if I choose data things create a new thing and a new
thing if I could rephrase this is a new row in the database a new object a new thing and you run the
database always say this to yourself otherwise you get confused create a new thing now it
says which data type are you creating a row in which data type at the moment we only have users
and you cannot create users this way users have to sign up to the app so we have to go ahead into the data data
types and create a new data type called project not projects just project because let's think of this as a box
okay data types are boxes or tables let's just say they're boxes if we open the box that says
user we look inside what do we see what belongs to a user so back on the screen we have Avatar first name last name so
I'm looking in the box and I have a user that user has an image they have a name they have an address they have food
preferences they have teammates they have products they've created that that's all fine like that's hanging off
for users but in terms of the attributes of a user that is email address and personal information that's a user what
about project create got a box it's got project on the side let's look inside the Box let open the box what's inside
project has an image title and it has a description just as the start now what the beautiful thing about Bubble is that
you can continue to build out functionality you can build the basic version first and then you can add more
Fields later or you can delete Fields so you don't need your complete database schema set up 100% don't worry about
that start building start stringing things together and then come back and add more Fields that's what we're doing
here so I'm going to say image creating a new field field name is image again I can call this anything I
like but I want to keep it sort of logical so I know what it is image and then bubble is saying okay Greg what
type of uh data is this and this is consistent with all developers all developers have to create these uh
Fields key value Pairs and have to match them up so the developer in me says well an image is kind you know it's it's an
image so I'm just going to scroll down I'm going to go to basic types and I'm going to find image boom create
look at this this field is a list multiple entries I'm not going to click that I'm just going to click create
image is an image yes we can create a list of images attached to a data type listing is a good example a a home
listing car listing uh product listing will come with multiple images e-commerce good example multiple images
of a dress or a jacket you can save multiple images here you can build out the UI where person clicks a button and
then can upload drag and drop images onto the page and that just uploads to their particular
product title what is a title well a title's text isn't it it's
text what about description description is text that's all it is but you know we could have
dates here date ranges we can have booleans yes no fields we can have files these are all the things I can add to
this project form I can add dates start date what is the end date what is the project value range sliders anything
under visual elements I can put into form I can capture that data and save it to a row in the
database but this is text that's what it is okay this is text so now we can save this so now I'm
back uh in the editor I'm going to edit that workflow now I'm going to choose project and bubble has this neat little
button down here that says add all fields and this is what I've already set up so let's start top to bottom we going
click forward slash and where is the description so now we have a matchmaking process we have a database field called
description that's expecting text where am I getting that text from and now have to match find an element that accepts
text we know what that element in is it's a multi-line input because we created it in the
form so I'm Type in mole for multi line and put A's value image the database wants an image
uh so we need an image element to be able to input we can't take we can't match this up let's just say with a
random input what's going to happen bubble's going to turn red here and it's going to say look that's not an image uh
we need an image element here matchmaking process so I'm going to um go and find just going to delete
this out here I'm going to say for Slash and uh picture uploader picture
upload is value lastly title is a very simple input add a title's value okay guys so we create the project
and when it comes to workflows we need to logically think about what happens next CU we have to design this bubble's
not going to just magically do everything for us I think we're getting there though they working on AI module
and I'll have to do another course when they when they create that but um soon we'll be able to instruct bubble to
build a lot of stuff for us but we need to be able to walk before we can run okay we need to understand how this
stuff works logically together so Step One is create the project what happens next when I click the save button think
about when you've created data in notion or somewhere else with a save button what happens well if it's a popup the
pop-up is going to close so I'm going to uh click next action I'm going to go to element actions because this the element
is a popup I'm going to say hide hide what bubble's asking I'm going to say please hide the popup project
boom let's get uh professional here so I've gone ahead and installed a plugin
called um have I let's type
in uh toast notifications all right so let's do this so I've just very quickly installed
a plugin that allows for toast notifications uh and I am going to just drop this in here one second guys you
don't really need to know what I'm doing here it's for another course uh
next so let's just go back to the save work flow so we're going to save data to the
database by creating the project we're going to hide the popup and check this out after we've hidden
the the popup I want to give feedback to a user that something's being created they might see it directly in a
card what's been created but it's also good uh to you know give more feedback so I'm going to say
um success okay and this is a little plugin that my friends have created that will show a
toast icon so you'll see what a toast icon is in a second let me just and you've seen these before uh let me just
quickly find it and just change one thing so I'm going to uh top
Center okay but let's just go back to this create button because we need to show the popup on a button click all
right so we've created the popup and now I'm going to add a workflow on the button to first element actions show
this popup so you can see that this is all logic based and the beautiful thing or
the democratizing feature of bubble is that you guys understand workflows and logic already because you use computers
every day you know what happens when you click on popup save buttons you know that by clicking a create button in the
dashboard is going to probably show you a model or a popup to create data you know the stuff so you can go ahead and
you can create these workflows knowing very well how things should function what the is what the workflow is right
so beautiful we click the create button we want Bubble to show the popup well there we go there's an action to show
the popup let's do it create I'm going to click on this guy
there's the popup I'm going to go ahead and find an image uh so the image I'm after is
better fly okay I'm uploading that image don't worry about sort of the
layout within this uh that's for another course so this is going to be called brand refresh so we could pretend like
we're an agency that does design work the client is called betterfly and we're creating a project and then within this
project we're going to have Associated tasks that people work on and update statuses and we have end dates calendar
Pickers collaborators all the stuff we build in beginners camp and then I'm just going to go to
lauram lauram ipim going to grab some Lauren I'm going to say that this is the
description going to grab all of this stuff right maybe it's a big description I'm going to paste this in here and
we're going to click save success all right so if we go to the database guys I'm going to go to my app
data here it is here projects let's click on this pencil icon let's look at the data here's the description I can
edit this if I want to here's the image I can see a bigger version of it if I want
to here's the title who created it Daniel created it he created it at this date and
time okay so we have some data to play with now how do we view the data now let's move on to the next section which
is displaying data dynamically I'm going to use a repeating group for this remember because we're going to
have multiple projects I'm not going to create I don't know how many created 1 million maybe I don't know you know so
I'm going to grab a repeating group drop it in and let's just just do some basic
design work I'm going to let it stretch edge to edge I'm going to remove the minwidth the Min height will remain for
a second uh within it it's going to be uh a column and I want this layout here where it is three rows across or maybe
four rows because I think this design is slightly uh narrower but we decide on how displayed
so let's work at that let's say a number of rows I'm just going to I'm going to remove the number of rows because I
don't know how many rows of data we have so I'm going to let it go infinite the database decides how many rows should
appear but columns I want a particular design so I'm going to say columns four columns
four okay um all right so don't worry about the detail guys we're looking at the
overview here so I've just clicked on repeating group and uh sorry I'm going to click on group
projects I'm just going to add some Gap spacing here of 48 let's push this down okay so in terms of a repeating group a
repeating group needs data so all we're doing now is we linking to the database the first thing bubble needs to know is
what type of data or what type of table is it it's the project so I'm going to say type of content and I've got some
options here I've got these are the ones I'd be using usually in a repeating group data types user or project I'm
going to say project very well which projects now if we're building out uh beginners Camp the
big course we would have we would want to see projects that belong to a team that Daniel Works Within okay that's too
complicated for this not too complicated you can learn it very quickly but just for the sake of this course I'm just
going to say go find uh do a search for projects without any constraints what we
could say as a constraint is where the um created by equals current user so this would
basically be a server side constraint or filter which is instructing bubble to just go fetch the project that the
person holding the mouse created which is Daniel so you can see how powerful this
can become because it doesn't have to be current user it could be current users team okay in this instance uh yeah I can
leave it at that because Daniel is creating the projects that's fine then we can sort the way that the projects
are viewed on the page is it the most recent maybe we have a dropdown which is sort a toz sort um most recent oldest we
can choose a drop down to then link the drop down can link to the sort but I'm just going to say created a
date uh descending no and then close so I'm just searching for all projects right let's create this
design for the card so when it comes to repeating groups we just design in the first cell so I'm going to get this card
in the first cell and then the next thing I'm going to do is say card medium uh so some of the design work has
been done for me and then on the layout tab I'm going to say it's going to be a column within it and just fill up all
the available space okay now on the repeating group um actually it'll be easier just to show
you so if I grab some text I draw some text inside and I want this to be the title okay I would add Dynamic data uh
and it's asking for a pairing groups thing and that's because repeating groups have a data source but get this
groups have a data source popups can have a data source a parameter is a data source a state is a data source an API
is a data source so we get very granular with where we get our data from now this is an easy one
because a group is nested within a repeating group so we need to feed project data into that group so I'm
going to click back on this group I'm going to call this group card and this is going to be project data that I'm
trying to display and I'm saying to the data source now instead of grabbing data from the database grab it from the cell
because the cell's been populated with the data source with the constraints have set up already so I can just say
current celles project all right so I could have a thousand projects all push into a thousand different cells push
that particular cell data into the group good to go so now I can say parent groups projects and then I can pull
anything I want here title there we go now I'm going to set up a body large for the title and I'm
just going to do some quick design work here edge to edge blah blah blah and there we go so if I now refresh check
this out guys brand refresh boom that's coming from the database how cool is that let's
continue with this design I'm just going to some of the stuff I'll just glaze over it's not
important uh just doing some basic design work here um do I
want separator yes white and 24 okay now I want an image in here as well guys so I'm going to draw draw an
image I'm going to grab some Dynamic data from this image so last time I loaded an image right because all static
now I'm pulling it from the database so it's a parent groups projects image and I'm going to cut the shape by
saying zoom into that shape please I'm going to go to the layout tab I'm going to select edge to edge and I'm going to
choose a fixed ratio of 3 to Common photography size uh actually maybe a 43 would be best letter here 43 then I'm
going to make first within this group I want this image to be first so I'm going to make
first and then I'm going to add some Gap spacing of 24 and then I'm going to take group project title copy paste and then
this will be group project I'm going to change this to the description and the description text
needs to be different smaller so I'm going to say body small okay now I want these text to be
closer together like elements remember describe how like elements need to be closer together inputs and then the
button would be further away or the image would be further away so I'll put that in the column and I'll have the
space to 12 it's part of my design system process fit height to content
okay all right guys let's now have a look all right so there is our Dynamic
data too much text here so check this out what I'm going to do is I want two rows of data so I'm going to set a Max
height of 40 so now for refresh it's just showing me two rows of
data here all right so this card I'm going to change the design quickly choose card
small rather and the next thing I'm going to do guys is that is one project let's see what the next one is this
holiday campaign here so let's create another project I'm going to say create there it is uploading this is a
holiday campaign and I'm going to grab some Lauren
ipom uh just some random Lauren Ipson here just for developer processes save boom there
we go there we go now we're cooking on gas now we're creating data okay guys now you're probably wondering
Okay so we've done create just did it right now uh we've done read we've displaying it in a repeating group how
do we edit okay we're going to cover this next so editing how do we edit so first
we need a way for a user to know that it's editable okay because maybe if I click
on one of these then it changes the view and then it shows me tasks belonging to betterfly and if I show you my figma
file that's what we do build in the beginnner camp is you click on betterfly and then that shows you a different view
with the tasks Associated those tasks have checkboxes where we can we can search the tasks within the betterfly
project we can change the status show me the complete statuses or the planning stage of the task we can see there
signes the progress through here everything is editable here as well so a user would change the pro the progress
from planning to inogram progress from in progress to complete fully functional productivity app that we end up building
we're not going to go that far though what we want to do is just change some of this data here okay so let's um let's
grab what I'm looking for is um vert
right so we need a way for someone to edit data so I'm just going to change this to
project title this is is a placeholder that just allows you to visualize data better and go to an outline icon drop
that in there and I'm just changing I'm creating an an icon a clickable icon here
um just so user knows that they can edit this group in a row speeding through this make
last and this is called edit all right all right so anyway so now we we need a
way and I've started the workflow here just from just from this section here just to save some time but we need a way
that when this icon is clicked this icon here you can see the hand it changes from a arrow to a hand so it know it's
clickable no where else is clickable just here know it's clickable we need a way to
First display uh to show that same popup that we created a project we need a way to
now push this project into that popup and then a way to edit the data as opposed to uh create the data all right
so you don't you don't need to create three different popups one for creating one for editing one for deleting no no
we use the dry method do not repeat yourself we've already created the popup I'm not going to recre created instead
I'm going to adapt the design adapt the functionality to be able to just edit stuff straight off the bat into that a
work I've already done that popup okay so let's do that so that means we've got a bit more work to do
here so in group project what we need to do is make sure that the popup has a data source so I'm
going to say type of content is a project but I'm going to leave the data source empty because I'm pushing data
into that through a workflow all right so that has a data source and now we can add um initial data we can add initial
data to our input so we can prepopulate any uh element that takes uh input data
so inputs multiline inputs picture uploaders file uploaders Maps we can have pre- dat from the database so let's
do that so I'm going to say that you're going to get the data from the the parent groups
project uh it's image okay it's image I'm just going to try something here as well I'm going to process with
image ex don't worry about this this is just an API I'm using here
okay okay so I'm going to pre-populate with initial content now the popup was set to a
project data type therefore in relation to the popup the input is a child element and the input can now reference
the parent groups projects title initial data and initial data is overlooked if there is no initial data so if we click
on create project for the first time there's no initial data but if now we click the that little icon to edit a
project well we're pushing project data from the database into the popup and we displaying it as initial data uh in
those inputs I'm going to do the same here so parent groups
projects description all right check this out so if I just want to create data
create a project or I click on create empty nothing here okay uh sorry we just we have to run that workflow so what I'm
going to do is that when these three buttons are clicked I'm just going to change this to a green color so you can
see what I'm doing then I'm going to choose something called element actions display data you could also say push
data same thing where do we want to display the data in the popup project where is the data coming from well it's
just coming from the parent where I'm clicking in that card in the cell of the repeating group that's the data so it's
a parent groups project so can you see how we like we matching data the repeating group has a data type
called project the popup has a data type called project therefore we can push data between these two containers
because they share a similar data source now my logical brain says okay if I click on those icons the three dots
I'm displaying data into the popup is there something else I need to do yes this is logic well you also have to show
the popup because I can display it into popup but we don't have to see the popup so I'm going to say element actions
show popup project boom let's try it brand refresh let's do this one first boom betterfly brand refresh data just
going to refresh the page holiday campaign boom holiday campaign how cool
is that refresh the page or I can just create don't worry that I'm refreshing the page it's because I haven't set the
workflow to basically refresh the data for me but we can push take the data out of that as well with a particular step
okay so this is where let's step up a level now let's go to level two we've done level one got a good overview we've
building out stuff I'm going to take you to level two now okay level two is this the save button I
don't want an edit button here I just want save can have an edit button that we can show conditionally when data
exists instead I'm going to do this I'm going to say um Chang this to Green as well I'm going
to add conditionality to a workflow remember the condition I set here
for this element the condition was change the background color to neutral 200 when this is
clicked that's the condition we can add conditions for workflows and these conditions can be
Daisy chained Mega powerful this keep it simple when do I want to create project data well I want to create project data
when there is nothing in this popup when I haven't pushed data into this popup that's when I want to create data so I'm
going to say only when point to the popup popup project I'm going to say it's project and then I'm going to
say is empty so if I've clicked on the create button and I haven't displayed data into
the popup I've just just clicked on create I'm not pushing any data around it's just a blank canvas that's when I
want to create data how cool is this so now I'm going to copy and paste this block copy paste going to change it to
orange green for create orange for edit that's the way I do it and now on the orange block I'm going
to say when it is not empty so the opposite of is empty when I have displayed data
into that popup well that means I'm probably want wanting to edit data I wouldn't want to create it I want to
edit it because data exists so therefore I'm editing data that I've pushed into the popup so then I would say data
things and I would say make changes to thing the next one down bubble says thing to change what is it well in
relation to the button the button is in a popup that popup has data says parent groups project here we go parent groups
project and I want to change everything so the description is in the multi-line input because I've made changes to it
the value and by the way if you leave one of these blank is absolutely fine bubble won't change it it's a
differential update bubble just looks for where there are changes and goes ahead where is the image well it's the
picture uploader where is the title title's
value okay and I can just pick this up take it to step one so so when there is no project data we create create a
project when there is data we make changes let's try it so let's go on to um let's do logo design for
outward so let's change the holiday campaign so I'm going to click on this going to choose outward
instead logo campaign and I'm going to change the wording just to start with Greg here
just so we can see the change and by the way yes I can design this so outward is EDG to Edge I just don't really have
time right now so if I click save it's not creating a project it's editing an existing project so we'll still have two
so if I click save there we go guys outward logo campaign there's Greg there all right so we've edited create
read update I guess crud R same thing editing and updating let's finish this off now let's
finish this off because once you understand create read update delete that is the Crux that is the overall um
point of an application ABNB people create listings people can customers then can read the
listings listing creators can edit the listings and then delete the listings and leave the platform now they've come
full circle okay so how do we delete so it would be a similar thing so we would start with
pushing data into the popup and I'm going to do this I'm going to take some text I'm
going to drop it beneath the save button I'm going to say delete okay I'm going to detach the
style put that in the center I'm going to change it to red red for danger okay red for destructive it's got to be red
and I'm just going to design it uh so it's nice and tight and I'm going to put it in the center
okay I'm going to hide it by default why because of this if I refresh the page and I click create you can't have a
delete option when there is no data there's nothing to delete so we only want to show the delete when we
have data in there so when we editing a project that's when we show delete because maybe that's part of what they
want to do they don't want to edit it they want to delete it so we'll conditionally show it guys so so on the
text delete I'm going to say not visible in page load collapse when hidden to remove the that space and then I'm going
to say on condition that the parent group's project is not
empty so if there is a project that's when it's visible okay that's when it's visible and let's run the workflow while
we're here very simply we're going to go to data things delete thing delete Row in
the database delete object depending on whether or not you have developer experience what do I delete well I
delete the parent groups project and then I
um then I hide the popup because there's nothing else in there and then I'm going to notify the user that has been
successfully deleted successfully deleted even though it does disappear from the repeating
group that repeating group could have a lot of listings okay so you always want to give users some feedback that would
be a an error let's try it let's delete logo campaign okay here
it is here delete if I hit that boom successfully deleted and gone yes guys if you're still with me congrats thank
you for hanging in there to end up to end this course we're now going to be doing something a lot more fun um I want
to build for you a hero section and a Navar done to the professional standard that I would do it when I'm building my
applications okay so this will be quite a big section um I'm going to have to go through fairly fast but again giving you
a flavor of what it feels like to build in bubble and bubble is fantastic at design ignore the web flow and frame of
people saying bubble's not great for design it totally is you just got to understand how to use it so let's jump
in and look at what we're building so we're going to build out this hero section part from beginners Camp all
right we've got a three column nav bar when we get down to mobile sizes now we've got a two column nav bar much
smaller this hamburger icon or menu icon shows up and these buttons are hidden all right text gets
smaller buttons stack in a column instead of a row that they are here and then the image gets a little bit smaller
and we've got some beautiful 16 pixels of padding all the way around all right so let's get
going so I've created a new page and let's start from the very beginning here is the page I've and I'm going to call
it Lando naturally this would be on the index page all right index page is the
default naked domain so for me build camp. that goes to my marketing page of which you know we're building a
marketing page right now straight away set up my page I'll set it to column top to bottom and I'll change
my default width for the UI Builder to 1400 and you know the height will decide a bit
later okay so we need some text here all right so this is um unlock your teams
potential and we're going to look at these various containers so there's a container there's a container containing
all of the stuff and then there's another container here so the first thing guys I'm going to do is I'm going
to pick up my group and I'm going just going to drop it on the page this is going to be called group
hero section okay the first thing we do is we lay just a group just so we can Mark out
this is a hero section and then when I get to designing the next part of my marketing site I would have content
section or community section or feature section all the way down to the footer section so we divide it vertically into
sections and we let them span edge to edge all right so this is going to be a column and I'm going to just remove the
fix width so it's edge to edge nman width and the height I don't really know at the moment it depends on the content
the content will set the height and we will come back and adjust it if we need to all right what I'm going to do is
just push it down 80 pixel from the top because we're going to use an 80 pixel nav bar at the
top I'm going to add 32 pixels of Left Right padding Okay the reason why I'm doing that is because when we get to the
mobile section we're going to need padding all the way around let's keep referencing
this got there in the end okay so I'm going to just grab this text first that's where we're going to
start and here are some text I'm going to draw it in and I'm going to paste unlock your teams potential and then I'm
going to set this to a H2 okay I'm going to remove the fixed width and I'm going to remove them in
width and I'm going to remove them in height and the last thing I'm going to do is on the appearance tab I'm going to
set that to the center all right so after that we have this like little
um beta text piece here so I'm going to grab some text they
drop that in just above this will say beta and I'm going to put that in the center going to remove the fix width
remove the Min width but I am going to check fit width to content okay I'm going to remove the Min
height the next thing I'm going to do is I'm going to change the color so I'm going
to choose my brand color here and then I'm going to set a background style of flat color which will also be the brand
color but I am going to change the opacity to be 20% all right now we need some padding
around this bad boy and let's just have a look at some of the design here so semi bold 14
and eight and three okay so semi bold 14 first of all I'm just going to actually detach the style here because it's a
oneof so this is going to be 14 let me change it to semi bold and I'm going to on the layout tab
choose three top and bottom on the padding and then eight left and right and we're going to make it round
as well all right so I'm just going to say 100 and now I'm going to take these two
pieces of text right click group elements in a column container what's happened there just
going to undo that ah it's outside of this ah I see okay so I'm going to pick this up and
I'm drag it into this container right this section group here section and then I'm going to make
first now I'm going to grab both of these together because I want to create another nested group okay I've got the
section which is EDG to Edge but I actually want to constrain it uh so it's more centered and let's just have a look
at the settings here so this group this is what we're creating here this is a fixed width of 576 or a Max width of 576
so I'm going to pick these two pieces up by highlighting them and I'm going to say give me a column container please
surrounding those two things this will be called group title and then I'm going to apply Max
width of 576 and then I'm going to reenter it in the center and I'm going to apply 24 pixels of row Gap there we
go all right making good progress next thing we need is this text over here so I'm just going to save myself some time
by copying this text I'm going to grab some text and I'm going to put it inside this new container I've just created
going draw it in and naturally it will drop it to the bottom because of our Flex settings all right um and I want
that in the Center and on the layout tab I'm going to remove the fixed width and minwidth
because it's now nested and now the parent group uh dictates what that should
be okay now I did say we're doing this to Professional Standards we going to be jumping back and forth and making sure
that all of our spacing is how it should be so the spacing between these two elements that's
12 and 24 okay so I'm going to take this text here I'm going to take beta right click
group in another column container and set this to 12 and in fact this is the one called
title and this is the one which I'm just going to say is called
text let's see what's next so now we have the learn more button and the get started
button and the space between these elements the Gap space is I get this container 48 okay perfect so I'm going
to grab a button here I'm just going to drop it in this will say learn more I'm going to change my style to secondary
large and on the layout tab I'm going to make sure that the button hugs the content the content is learn more I'm
going to remove them in width and we say fit width content and I'm going to use a bootstrap 48 pixels toall perfect let's
do another button copy paste now this is a different color this will say get started
all right the more important button that's why we're going to use a primary large and now we're going to take these
two guys and put them in a row container because they on the same x axis so row container this will be called group
buttons and on the layout tab I'm going to chooseing Gap spacing of 24 with both ways because what's going to happen is
when it gets down to mobile sizes the buttons instead of being next to each other they're going to be stacked and
then edge to edge across the mobile phone side across a mobile phone screen so we need to put our row Gap and our
column Gap within this container all right and now we can fit with the content and that we'll put it
in the center after we set the horizontal alignment and I'm going to go back to the group hero section and set a
gap spacing of 48 because that is a container and then inside is a container which has Rog G of 24 then we have
another container with these two guys in which is 12 so 12 24 48 all right guys we're cooking on gas
I'm going to highlight group hereo section and I'm going to remove fit height to content because I want to sort
of push down a bit now we're going to grab this image here okay this image so I'm going to grab an image
element draw it in and then I'm just going to quickly put it in the center I'm going to set up some parameters
before I upload the image so I don't want it to be fixed width this is fluid but I do want a Max width of 992 now
where do I get this number 992 from again bootstrap standard and let me show you another place so if I head over to
the responsive tab we've got 992 all right so bubble has adopted some of the bootstrap standards
here now I've already uploaded this image um I could upload it again or I could just go to the file manager and I
could just grab it from here so I'm going to copy that link so I'm not uploading it twice
and I can just paste it in boom done now obviously when it comes to images we need to set the aspect ratio what do we
want this image to fit and I'm going to head over to the layout tab and previously we remove the minwidth first
and the Min height previously I mentioned that aspect ratio we have options here now we have to you can set
any aspect ratio you want and the aspect ratio of this image that I created in figma it's a screenshot from beginners
Camp is actually a 107 as aspect ratio so it's arbitrary you can set any aspect ratio you want so I'm going to say if I
say 107 now I can see that now that it's rendered it looks a lot lot
better okay back on this group I going to set a fit height I'm going to remove the Min height on the group hero section
and set fit height content just so that it encompasses this image as well all right what about a bit of uh
Shadows let's just first see how we're getting on here so if I say Lander okay so we can't really see the
border of this I didn't put a border on so we're going to use a shadow here so I'm going to head over to uh down to
Shadow style I'm going to choose outset okay um let's try a spread radius of 20 blur radius of 40 I'm going to
change the color of that and I'm going to set it to about 5% give me there guys all right let have a
look at that yep that looks quite nice let's lifted off the page and let's choose some roundness of let's choose uh
let's try 16 no let's try 12 yeah that looks really nice let's refresh the page and look at that guys
that looks pretty professional uh if you're a web flow person here's your proof I've done this very very quickly
okay it's more about your understanding of design rather than the tools bubble gives you the tools to do everything you
need on the design side okay what about responsive design what about responsive design because if
I go down here um let's have a look at 768 looks good
this image is sort of rendering and then down at 320 it doesn't look that good so let's fix this but 375 is kind of the
adopted uh responsive size these days so the first thing I'm going to do is when you're on a mobile phone so on a
desktop you want more padding okay you've got a lot more horizontal space on a phone you don't have a lot of space
so someone like apple if you go to any Apple website they use 16 pixels Left Right padding because they only maximize
screen space on a phone that's always what you want to do let me show you how I'll do this so I'm going to add a
conditional and group hero section the main group that's holding all of these other groups plus the image I'm going to
do this I'm going to on the condition I'm going to say page for page width and by the way this is a condition that you
learn at Flex camp and this is a method this is the the method at the moment bubble is working on a new way for break
points but I devis this system and is consistent so if you're looking at this going wow that looks complicated the
thing is you'll be doing it over and over and over again just this method no other method so I'm going to say page
width and I'm going to choose a smaller than sign I'm going to say 576 that's one of the bootstrap break points bubble
doesn't include it here for some reason but I'm going to say 576 that means now we're down to mobile sizes and I'm going
to say when that happens set the left padding and the right padding now watch what happens in the design here set it
to 16 16 and 16 can you see how we've maximized the screen size there's some
still some more work to be done because our title text is too large so I'm going to right click I'm going to copy this
guys copy save myself some time I'm going to click on the text element Define another condition on the
conditional tab paste in the expression and then I'm simply going to say font size I want the font size to be smaller
so instead of so let's try 36 maybe we can choose 48 no I actually like let's do 40 two
lines of text how nice is that how nice is that so we're at desktop sizes squeeze
down desktop sizes see we got the max withth kicking in here squeeze down boom mobile sizes
kicks in okay let's deal with this button now so I'm just going to double click the group buttons and the first
thing I'm actually going to do is I'm just going to adapt the column here to 12 so these buttons are closer
together and now check this out now I'm going to go to the condition here I'm going to paste in the all the same
conditions that we used for the other on so paste condition current page width is smaller than 576 and I'm actually going
bring it down so you can see it happening in real time bring it down here when that happens guys I'm going to
say um minwidth of this group I'm going to change the pixels to percentage and I'm going to
say 100% that's the first thing can you see how it spans edge to edge but we're not quite done I want these buttons to
stack this is the design I'm after here okay that's the design I'm after so I'm each button I'm going to Define
conditions I'm going to paste and I'm going to say exactly the same thing I want you to be minwidth
100% And then I'm just going to actually right click on this button itself and I'm going to say copy special copy
conditional expressions and this saves us a bit of time click on this button right click paste conditional
Expressions boom and our mobile responsive work is done check this
out desktop tablet phone all right the Gap spacing is a bit
big as well so layout tab 12 one last look boom absolutely love it okay so that's part one uh hero
section and you know you can do all sorts of things um like overflows and put things on different axises so they
float there aren't that many limitations you can do animations with bubble um a lot
of things okay but I prefer to keep things fairly simple and just welld designed that people can digest if you
look at Airbnb Uber atlason notion all of their designs are actually quite simple got no crazy sort of animations
because in real life uh people just want to see a few things they want to make sure that they trust
you and good design is actually part of that they want to get to the information they need as soon as possible and they
don't often want animations to sort of get in the way they don't want too flashy so bubble can do all of that
stuff but I prefer to keep things simple welld designed to the point fast loading all right guys in this next
section we're going to build out this nav bar and this is slightly more technical because we're going to be
collapsing groups and actually changing the design quite in quite a considerable manner but we're not going to be
creating two separate nav bars we're just creating the same one and we're using conditionals to show and hide
different elements change the behavior and this is where we're going to use a reusable
element all right let's get started so over on the UI Builder I'm going to add a new reusable
element going to call this nav bar I noticed I did have another one but I'm going to create a new
one now I left myself 80 pixels of space so I'm going to go to the layout and uh this is going to be a row and I'm I'm
going to set the width to the same width of the page and the height to 80
okay so now we need to divide it into three parts so let's just work on the left hand side first now the first thing
is I don't want the content to stretch to Infinity across a big screen so I don't want like logo on the far left uh
and then buttons on the far right if you're on a massive screen it's actually a long way to move your mouse and if you
look at design like Twitter they they centered so it's just easier and faster to navigating so we need a Max width is
what I'm trying to say so we're going to set a Max withth of 1200 in this SV bar and when I build up my marketing Pages
all of them have Max widths in terms of the content of 12200 the screen can be as big as possible but the content will
still be constrained a bit so what I'm going to do is I'm going to grab another group and I'm going to draw a group
inside okay this will be called group content and this is going to be a row distributed left to right
um and we're going to remove the fixed width we're going to add our width of 12200 remove our minwidth and remember
the Height's going to be 80 okay so back on the nav bar itself let me just bring up the property editor
I'm going to put that in the center okay so here's the group here now this content is going to have 32 pixels left
right and you guessed it when to get below 576 we change that to 16 left right okay let's get it going so in
image let's draw an image in here inside this new container I'm going to go find that image that's just a logo of course
uh let's use origin for this case copy and I'm just going to paste that in
and there it is there now on the layout tab I'm going to put this vertically aligned in the center and I'm going to
choose an aspect ratio 1: one and I'm going to choose 32 pixels for this bad boy and that can be fixed as well this
you don't want this to change responsively now I'm going to pick up some text I'm going to draw it in uh
let's call this origin of course we can drop in a full logo here if you design your own logo
and uh let's try heading six on this guy and let's drop it in center and have a look see remove the fixed width remove
the Min widths fit width to content and then let's group these two together because we need we don't want just
elements scattered across the row we want the in terms of parent elements less as possible so even though we have
the logo and the logo name and then we have all the text links in the center and then we have two buttons on the
right I only actually want three groups grouping all of these parts of the Navar so I'm going to right click group
elements in a row container because it's on the same axis again so row again okay we're going to call this uh group brand
and I'm going to add I'm going to push these two elements uh apart by adding some column gap of
eight okay so that's group brand and now guys check out check what I'm going to do now I'm going to go copy
paste and this next group is going to be called group links and then I'm going to Simply say
copy paste and the next group is going to be called group buttons okay and then I'm just going to
actually delete what's inside here so uh hang on before I do that I just need to set
a height I need to set a height here so let's do let's do 48 on the height so Min
height is 48 and Min height here is 48 okay because we've set that now I can delete what's in
here and let's grab some text and let's create these links so the first link is home then we've got Blog then we've got
pricing uh so grab a link first one is home styling looks fine so far remove
the fixed width remove Min width fit width content then we go
blog and with these text links you actually set the page whether it's internal external and you just link up
the pages that way so uh if I wanted to set this to a page I could just choose a page here I could say send me to the
sign up page from this link or if I choose external bubble then says we'll just put in the URL here okay I'm not
going to put anything in here for now actually I might have to put things in here just because otherwise bubble will
throw an error and this is purely a design tutorial but let's just say um blog and let's say pricing
here okay now I want to distribute the content in the center so head over to the layout tab first of all the
container alignment needs to be Center and then we can vertically align each one in the
center now I want more spacing between these elements So currently we have eight I'm going to try 12 going me try
16 and I'm pretty happy with that okay now the buttons I'm going to grab a button I'm going to go to the
final group here and this is going to say um let's have a look at design actually login and sign up so this one
says log in and the style was the secondary large on the layout tab let's remove the fix
width remove the minwidth fit width to content and the height is going to be 48 pixels toall and lastly if I copy and
paste that button I can just then adapt the login button to a sign up button with the primary Lodge and
buttons you can also style link L to be buttons as well but obviously you can't run a workflow of a link you can only
run a workflow of a button so it's up to you how how you'd want to do this okay and then on the container um
alignment for this row group buttons I'm going to push it to the right hand side okay let's just have a look at this
responsibility to see what's happening here so if I go down to 992 still looking good 768 still looking
good but starting to get a little bit tight I could have more links in here remember go down and then we'll go down
a bit further stuff starts to look terrible so what we're going to do is this I'm going to go to the group links
because at mobile sizes we shouldn't see we should see the brand group with a menu Mobile menu icon on the right hand
side so we need to hide the links group and hide the buttons group with conditions now you know what these
conditions are instead of 576 break points for these conditions I'm going to use 768 just
because of the design it needs a bit more space okay so let's bring this below 768 so we can see this happening
in real real terms so group buttons what we're going to do is we're going to
say page width smaller than 768 then this element is visible
uncheck okay the last thing we need to do see that this group buttons is still left here we won't be able to see it but
it's left in the background and we're going to say collapse when hidden there you go so then this takes its space its
place sorry just going to um bring it back a second because I'm going to take what's
on this group right click copy special copy conditional Expressions then on this blog set the links section right
click paste special paste conditional Expressions so now we can see it here there that I also need to collapse and
hidden now what do we have boom okay almost done the last thing we need to do is this mobile menu so I'm
just going to go to Hero icons quickly and remind myself what is called uh let's do this one let's
do bars 3 bars three okay on the UI Builder I am uh I'm going to
grab outline icon I'm just going to sort of draw it in anywhere this is going to be
bars three and let me just do some styling very
quickly 24 pixels in the center okay and I'm just going to push this to the right of uh this here okay
so it's sitting here or we could actually just make last okay the main thing to remember that we have these
three groups and then this bars is sitting outside of these three groups because we're going to hide this group
and hide this group so this needs to be independent but we not going to see this on page load all right so look at this
we say this element is visible in page load no and collapse and hidden okay now it's gone all right and I can see it if
I only show hideable I can see it over here now I'm going to apply it's the opposite uh condition so if I take this
condition here current page width is smaller than 768 and I paste it in on this mobile
menu now I'm going to say the opposite now show to me below 768 show me that icon because it's not visible in page
load okay so if I go to the responsive tab I come down here now you can see it this is it an action guys how cool is
that and then off of that you would decide well how do we show these navigation links home blog pricing login
sign up what we do is would build a popup here we're not going to do it now don't have time but we would build a
popup to then show uh for when our users on their phone to then show them the mobile menu with home blog pricing login
sign up all right guys let's have a look on the on the actual design on the site as
if a user would see it we've got a bit more work to be done here sorry got a bit more work to
be done so this is a reusable element so it's in the reusable element SE section on the
drop down where we change Pages let's have a look so it's down here this new one that I've just created down here
let's go to the Lander and this is how it works uh sorry that's a layout let's go to the Lander so quite simply I would
just scroll down the left hand side find the nav bar just created this is it here bubble gives a preview click it
once click it again beautiful there we have it there it is and then I could go anywhere I could go to the test
page pick up the Navar drop it in there it is there and the beautiful thing about these reasonable elements is they
would also include all of the workflow so the login workflow signup workflow all of the link clicks so wherever we
drop it on the page that's all included so it's almost like his own page and we can repurpose
that little component a reusable element anywhere in our app but we only edit it from one place that's part of the dry do
not pach yourself method okay let's go back to the Lander and now let's refresh and have a
look boom how cool is that what I want to do is just add a little bit of a line underneath this guy so I'm going to edit
this reusable element I'm going to head over to the actual nav bar itself and I'm going to go Define each border
independently go to the bottom choose solid and then choose just a light gray and I've set up my styling already let's
choose yeah neutral 200 one last look guys look at that pretty
amazing now we can also get this to float all right we would change this to an element type floating group if we
wanted this to stay uh you know visible at all times and that's sort of a creative Choice whether you want to do
that but at the moment it's a group it could have been a floating group and you can put like a little Shadow beneath it
you can even conditionally add shadows and underlines or remove them or change color and scroll anything you want to do
one last check guys is bring up Chrome developer tools of which I teach as well and flex camp and we can just look at
some of this stuff how cool is that all right guys we're going to stop
there I hope uh you a able to get really good Insight from this course overall hope you had a good time hope you
learned a lot I ABS love teaching this stuff so make sure to check out all of my other courses and hopefully I'll see
you at Bill Camp very soon so if you want to take your bubbling to the next level potentially
work you know look to look work for an agency you'll need to step things up now I've talked about beginners Camp a lot
probably the best selling course in bubble of all time um I've fed over 30,000 students through it and I've been
bubbling for seven years okay building ups for seven years so it's a pretty good place to start after that you can
look at something at Flex Camp which is a masterclass in responsive design this is all bubble by the way taking you to
some responsive settings here and look how beautiful all of this layout is and I teach you a lot more than just using
bubble here this is about industry Standard Building for responsive design using
bootstrap and building using Design Systems okay you can even build responsive
dashboards who would have thought that this is all bubble all right coming down to mobile sizes here we are here here's
our transactions so that's Flex Camp that's available right now then there's things like Marketplace Camp I just take
you through this very quickly here is a listing you know with a sticky uh with a little sticky section
over here where you can book set the number of guests use the date picker here to decide and then you can book by
the way this is fully functional so this connects to stripe it takes real card details we use test details but you
could launch this as a two-sided Marketplace all right um You would start at the home you do a search down here
that would connect to the Google Maps API then you can go search that API key removed right now so you can't see the
map now but you could search like listing types you want a room you want a number of rooms four or you want
particular listings you want checkin dates check out dates and then you can click through and see the results on the
map and also in a repeating group this covers everything guys this covers like account creation signing up
creating new listings if I create a new listing over here this is pretty vast all right pretty vast so that's
Marketplace Camp SAS Camp I think is my second best seller in terms of courses and with SAS camp that that's a real
deep dive into like payments transactional email analytics how to build a fully fledged SAS application
that you can monetize see external analytics building dashboards building storefronts signing up customers or
stripe connect connecting other people's stripe account to yours it is a you can start it as a beginner but you need to
do beginner Camp first but it is pretty incredible what you can do here you can see all the transactions here um and you
know you can add more products here the products over here you can edit the products you know these
could be courses they could be PDFs anything you like so it's bit like building a Shopify experience like you
build Shopify all right uh so you've got Flex Camp SAS Camp Marketplace Camp covering
all these big sectors and then beginner Camp is where you would start and this is just everything is built in bubble
here guys everything that you can see uh is built in bubble weight list Pages before we get started how to deal with
email automation segmentation marketing campaigns transactional emails uh all of the kind
of payment services that you need looks incredible and if you are serious about becoming a bubble developer your next
step is beginners camp and then you move on to one of these and you will be a professional developer within six months
guys I hope you enjoyed it again I'm Greg check out Bill camp. check out the courses they often on sale and hopefully
I'll see you in the first course take care [Music]
he [Music] oh
[Music] oh e [Music]
Bubble is a no-code platform that enables founders without coding skills to build scalable web applications using a visual editor. It combines design elements, database management, workflows, and API integrations into one system, allowing users to create fully functional apps quickly and efficiently.
You can build a responsive UI in Bubble by using containers and groups with flexbox layouts, incorporating input forms, buttons, and other elements. Bubble's flexible breakpoints and style adjustments help ensure your app looks good on all screen sizes, from desktops to mobile devices.
Workflows in Bubble are event-driven actions triggered by user interactions like button clicks or page loads. They allow you to implement logic for creating, reading, updating, and deleting data (CRUD), navigating between pages, and integrating server-side operations—all without writing code.
Bubble includes a built-in SQL-like database where you define data types and fields for your app's information. To ensure user privacy, you can set server-side privacy rules that control data access and enforce security, protecting sensitive information from unauthorized users.
With Bubble, you can build varied apps such as marketplaces, SaaS platforms, fintech tools, social networks, and AI-integrated solutions. While it's great for MVPs and growth-stage startups with up to around 100,000 users, large-scale infrastructure demands might exceed Bubble's current capacity.
Reusable elements let you create modular UI components like headers or buttons that can be used consistently across pages and projects. This approach ensures design consistency, makes updates easier, and improves maintainability, speeding up development in complex startups.
Beginners can access courses like Bill Camp's Beginners Camp for foundational skills, Flex Camp for responsive design mastery, and Marketplace and SaaS Camps for specialized app types. These structured programs, alongside detailed guides and sample projects, help founders confidently build and launch their Bubble apps.
Heads up!
This summary and transcript were automatically generated using AI with the Free YouTube Transcript Summary Tool by LunaNotes.
Generate a summary for freeRelated Summaries
Unlocking Startup Potential: Building a Social Media App for Entrepreneurs
Discover how to create a startup idea community app using AI tools seamlessly.
Building Bootstrapped Startups: A Journey Through Entrepreneurship
Explore strategies for successfully building bootstrapped startups. Gain insights from one entrepreneur's journey and key methodologies.
Mastering the Lean Startup Approach: Your Guide to Successful Entrepreneurship
Learn how to apply the Lean Startup principle for sustainable business success with practical insights and examples.
Unlocking Viral Success: Lessons from Product Management with Nikita Beer
Discover insights and strategies for successful app growth from Nikita Beer, who sold TBH and gas to major tech companies.
How to Start a Technical Startup: Essential Tips for Founders
Discover expert insights on launching a successful technical startup with a focus on team, MVP, PR, and funding strategies.
Most Viewed Summaries
Kolonyalismo at Imperyalismo: Ang Kasaysayan ng Pagsakop sa Pilipinas
Tuklasin ang kasaysayan ng kolonyalismo at imperyalismo sa Pilipinas sa pamamagitan ni Ferdinand Magellan.
A Comprehensive Guide to Using Stable Diffusion Forge UI
Explore the Stable Diffusion Forge UI, customizable settings, models, and more to enhance your image generation experience.
Pamamaraan at Patakarang Kolonyal ng mga Espanyol sa Pilipinas
Tuklasin ang mga pamamaraan at patakaran ng mga Espanyol sa Pilipinas, at ang epekto nito sa mga Pilipino.
Mastering Inpainting with Stable Diffusion: Fix Mistakes and Enhance Your Images
Learn to fix mistakes and enhance images with Stable Diffusion's inpainting features effectively.
Pamaraan at Patakarang Kolonyal ng mga Espanyol sa Pilipinas
Tuklasin ang mga pamamaraan at patakarang kolonyal ng mga Espanyol sa Pilipinas at ang mga epekto nito sa mga Pilipino.

