Learning in Public: Potion.so

Welcome to the page where I'll be sharing my learnings of how to build websites with Notion and Potion.so.

 
Resources
Code and Colors for Websites for Creators
Laundry list of tasks
set global font
choose good font combo
add all content to homepage
remove subpages from homepage
make footer
center 3-benefits section
figure out how to add borders to the images
figure out how to target the "open" toggle text

Daily Log

Sept 2
I'm trying to finish the footer today.
It's taking me a while to get back into the code mentality
/* unvisited link */
      a:link {
        color: #2d2d27;
Added this to fix the opacity of unhovered links
Sept 4
<!-- BirdSend Form Starts -->
<head>
<link rel="stylesheet" href="https://use.typekit.net/teh1xka.css"> 

<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inconsolata:wght@300;400&display=swap" rel="stylesheet">
</head>
<style>
.bs-form-plain {
margin:auto
}

.bs-form-plain,.bs-form-plain *,.bs-form-plain :after,.bs-form-plain :before {
box-sizing:border-box
}

.bs-form-plain .bs-btn {
display:inline-block;
padding:6px 12px;
margin-bottom:0;
font-size:24px;
font-weight:600;
color: #2d2d27 !important;
font-family: 'Swear-display', serif;
letter-spacing: 1px !important;
line-height:1.42857143;
text-align:center;
white-space:nowrap;
vertical-align:middle;
touch-action:manipulation;
cursor:pointer;
-webkit-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
user-select:none;
background-image:none;
border:1px solid transparent;
border-radius:5px;
background: #c3d8bf !important;
}

.bs-form-plain .bs-btn.active:focus,.bs-form-plain .bs-btn:active:focus,.bs-form-plain .bs-btn:focus {
outline:5px;
auto -webkit-focus-ring-color;
outline-offset:-2px;
}

.bs-form-plain .bs-btn:focus,.bs-form-plain .bs-btn:hover {
color:#2d2d27;
text-decoration:none
}

.bs-form-plain .bs-btn.active,.bs-form-plain .bs-btn:active {
background-image:none;
outline:0;
box-shadow:inset 0 3px 5px rgba(0,0,0,0) !important;
}

.bs-form-plain .bs-btn[disabled] {
cursor:not-allowed;
filter:alpha(opacity=65);
box-shadow:none;
opacity:.65
}

.bs-form-plain .bs-form-field {
display:block;
width:100%;
height:40px;
padding:7px 12px;
font-size:20px;
line-height:1.5384616;
color:#2d2d27 !important;
border:none;
text-align:left;
margin-bottom:5px;
background-color:#f8f7f4 !important;
}

.bs-form-plain .bs-header {
font-size:30px
}

.bs-form-plain p {
display:inline
}

.bs-form-plain .bs-gdpr {
display:inline;
font-size:11px;
line-height:1.7
}

.bs-form-plain .bs-branding,.bs-form-plain .bs-footer {
font-size:11px;
text-align:center
}

.bs-form-plain .bs-branding {
margin-top:24px
}

.bs-form-plain input[type=checkbox] {
-webkit-appearance:none;
-moz-appearance:none;
display:inline-block;
width:14px;
height:14px;
background-color:#f8f7f4;
border:1px solid #f8f7f4;
border-radius:5px;
cursor:pointer;
margin:0 5px -2px 0;
vertical-align:-1px;
position:relative
}

.bs-form-plain input[type=checkbox]:checked {
background:none;
background-position:50%;
background-size:75%;
background-repeat:no-repeat;
border:1px solid #2d2d27;
box-shadow:none
}

.bs-form-plain input[type=checkbox]:checked:before {
position:absolute;
content:"\2714";
font-size:90%;
color:#black;
top:0;
left:2px
}

.bs-form-plain input[type=checkbox]:focus {
outline:none
}

.bs-form-plain a {
color:#406ba1;
text-decoration:none
}

.bs-form-plain a:focus,.bs-form-plain a:hover {
color:#2a476a;
text-decoration:underline
}

.bs-form-one {
max-width:472px;
padding:40px 64px;
font-family:inconsolata;
border-radius:5px
}

.bs-form-one .bs-header {
margin-bottom:6px;
font-size:24px;
font-weight:600;
color:#555;
text-align:center
}

.bs-form-one .bs-subheader {
margin-bottom:16px;
font-size:16px;
font-weight:400;
text-align:center;
color:#888
}

.bs-form-one .bs-footer,.bs-form-one .bs-header,.bs-form-one .bs-subheader {
height:auto
}

.bs-form-one .bs-input {
height:40px;
width:100%;
padding:8px;
font-size:14px;
font-family: inconsolata;
color:#2d2d27;
border:1px solid #2d2d27;
border-radius:5px;
margin-bottom:6px;
background: #e8e6e3;
}

.bs-form-one .bs-textarea {
min-height:100px;
background: #e8e6e3;
}

.bs-form-one .bs-input:hover {
border-color:#c3d8bf;
background: #f8f7f4;
}

.bs-form-one .bs-input:active,.bs-form-one .bs-input:focus {
outline:none;
border-color:#c3d8bf;
background: #f8f7f4;
color: #2d2d27;
}

.bs-form-one .bs-input::-webkit-input-placeholder,.bs-form-one .bs-placeholder {
font-style:normal;
color:#c3d8bf
}

.bs-form-one .bs-input::-moz-placeholder,.bs-form-one .bs-placeholder {
font-style:normal;
color:#c3d8bf
}

.bs-form-one .bs-input:-ms-input-placeholder,.bs-form-one .bs-placeholder {
font-style:normal;
color:#c3d8bf
}

.bs-form-one .bs-input::-ms-input-placeholder,.bs-form-one .bs-placeholder {
font-style:normal;
color:#c3d8bf
}

.bs-form-one .bs-input::placeholder,.bs-form-one .bs-placeholder {
font-style:normal;
color:#c3d8bf
}

.bs-form-one .bs-btn {
height:40px;
width:100%;
margin-top:16px;
font-size:20px;
font-weight:600;
color:#2d2d27;
letter-spacing:.5px;
background-color:#e8e6e3;
border:none;
border-radius:3px
}

.bs-form-one .bs-btn:active,.bs-form-one .bs-btn:focus,.bs-form-one .bs-btn:hover {
outline:none;
background-color:#f8f7f4;
cursor:pointer;
color:#2d2d27
}</style>
<div class="bs-form-plain bs-form-one">
    <form action="https://app.birdsend.co/subscribe" method="post" bs-form>
        <div style="display: none;">
            <input type="hidden" name="meta_id" value="10314">
            <input type="hidden" name="meta_user_id" value="2286">
        </div>
        
                                    <input type="text" name="first_name" class="bs-input" placeholder="First Name"   required >
                                                <input type="email" name="email" class="bs-input" placeholder="Email Address" required>
                            
        <button type="submit" class="bs-btn">Join the newsletter.</button>
        
                <!-- Please do not remove this or risk form bot signups-->
<div style="position: absolute; left: -5600px;" aria-hidden="true">
<input type="text" name="confirmdata" tabindex="-1" value="" autocomplete="new-password"></div>    </form>
    <div id="bs-message"></div>
    <script>
(function(w, d, s, id){
    var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) { return; }
    js = d.createElement(s); js.id = id; js.src = 'https://cdn.birdsend.co/assets/static/js/form.js'; fjs.parentNode.insertBefore(js, fjs);
}(window, document, 'script', 'birdsend-form-js'));
</script></div>
<!-- BirdSend Form Ends -->
Aug 26
nice footer structure
notion image
 
Aug 23
Removed this from the footer

Services

Branding
Web design
Design for Creators
Website templates

removed this because I can't figure out how to have the whole block change on hover (right now it's two separate blocks)
.notion-block-e76d2223436149fcad7844baa7e1e4f4:hover {
    color: #f8f7f4;
    background: #264f3d;
}

.notion-block-dbaf5744aef6450fab1701048e824a6a:hover {
    color: #f8f7f4;
    background: #264f3d;
}

.notion-block-a7a28f8bb3cf421cb4c59b83446af089:hover {
    color: #f8f7f4;
    background: #264f3d;
}

.notion-block-6b30b0ec05e74759981a313db46691f8:hover {
    color: #f8f7f4;
    background: #264f3d;
}
removed this text from the global notion styles
:root {
    --bg-color: #f8f7f4;
    --fg-color: #2d2d27;
}
 
August 22
  • Realized I need to remove the "hide pages" globally, so the blog will work.
    • Removed this which are the 3 blocks of the pages, and added them to the footer section
    • .notion-block-234a5b3174c64d5cbf67dd7aac779174 {
          display: none;
          }
      
      .notion-block-b6762f2315814b48a192a0cccacb293d {
          display: none;
          }
      
      .notion-block-475bc68ddf2d48458bc07e89e1deaa1c {
          display: none;
          }
  • If you use ".notion-page-link { display: none;" → then the subpages won't work at all
  • So to create the footer I plan on using the subpages as part of the footer structure, creating a synced block, and duplicating it across the pages
  • how to target a specific div in a notion block without changing every class
.notion-block-5482b9844aa7413e84eb87aa179f2cd3 div {
    align-self: flex-start !important;
    }
August 20
This wasn't centering the content of the Cafe splendide section
align-items: center;
   justify-content: center;
   padding-left: 10vw;
   padding-right: 10vw;
   max-width: 1800px;
   min-height: 70vh;
Switched to this 👇🏼 which I copied from the hero section, and it worked!
padding-left: 10vw;
    padding-right: 10vw;
    min-height: 80vh;
    align-items: center;
    max-width: 1800px;
    margin: auto;
August 19
I keep going back and playing around with design elements, when I just need to get the rest of the homepage structured.
Here's where it is now:
Code snippets for border of "What is a brand/branding" sections
border-top: 4px solid #2d2d27;
    border-right: 4px solid #2d2d27;
    border-left: 4px solid #2d2d27;
border-bottom: 4px solid #2d2d27;
    border-right: 4px solid #2d2d27;
    border-left: 4px solid #2d2d27;
August 17
  • code for cafe splendide block
width: 80vw;
    max-width: 920px;
    margin: auto;
    padding: 5vw 0vw;
August 13
  • Removed this:
    • .notion-viewport {
      padding: 0;
      max-width: 100vw;
      }
Figured out how to target the global text styles necessary to override the one that Potion sets. You must use !important; to override the native style.
.notion {
    font-size: 16px;
    font-family: commuters-sans !important;
August 12
Well, first: to state the obvious, I didn't get it done in 2 days. But I have a much better idea of how everything works.
I feel like this learning experience is not linear, but exponential.
💡
Triumph: I finally figured out how to change the width of each row independently of each other. This will enable me to have the lines like I have on my previous site!
August 11
Current state:
notion image
The navbar is basically done. (Still need to do mobile)
Align-items horizontally in flexbox
align-items: center;
for aligning/centering items on the horizon in flexbox.
Justify-content vertically in flexbox
justify-content: it's like the "align-items" property for the vertical access.
  • All-caps CSS class = text-transform: uppercase
August 10
Here's where the site is at 11am:
notion image
Wahoo! It's starting to look actually like the old site. I feel like the hard stuff is done.
Here's what I've done this morning:
connect google/Adobe fonts → I realized that the link had to be in the <head></head> tag. That's why they weren't working before
Add a footer that will be able to be full-width. This was one of my concerns because
  • The way Potion works is everything via notion is styled inside the .inner-container so unless I want to manually create the proper margins with CSS for each element, which would be a huge pain, then even the footer would have to share that same width. Not the hugest problem, except I'd prefer to have it be a different color, or with a line like I have now.
Added this code to make the logo smaller without
August 9
Okay, today begins a 2-day sprint to get my site rebuilt in Potion.
Webflow site renews on Wednesday and i'm using that as my deadline
I got the site structure set up on the Notion side

Navbar

Made huge progress on this, first by inspecting the code for the potion.so site, and this one: https://anastako.com/
I was still struggling with flexbox and figuring out how to make it look right, but then Noah shared this with me:
It's basically a tutorial for doing exactly what I want to do.
About to quit for lunch, but that's what I'll be doing this afternoon.
Site looks like this now
notion image
Quite ugly, but you can see the site pages on bottom left of body. Menu is now on bottom and completely unstyled. Native notion header is visible on top.
Navbar old code styling
/* notion-header i.e. nav-bar */

.notion-header {
position: fixed;
width: 100vw;
z-index: 500;
margin-top: 0 !important;
background: red;
height: fit-content;
}

.nav-wrapper {
display: flex;
flex-direction: row;
width: fit-content;
}

.nav-logo {
width:300px;
}

.menu {
background-color: rgba(255, 255, 255, 1)!important;
display: flex;
justify-content: space-between;
width: fit-content;
white-space: no-wrap;
}

.nav-wrapper {
max-width: 300px;
background: green;
}
 
July 29
It looks horrible, but I want to be able to see the different elements → where they're positioned, how much padding and/or margin they have etc.
notion image
 
July 28

Navbar

  • Got it to top of frame with this and targeting the right element:
    • .notion-header { position: fixed; width: 100%; z-index: 500; }

General building

I just discovered how you make new elements: add
<div class="notion-header">
</div>
This actually creates a new element on the page. You then add css to style that element in the <style> section below
Like this👇🏼
notion image
  • I think this is quite an elementary thing haha, but having always worked with visual builders, I never understood the relationship between the actual html/divs and the css. Because with them, you just drag the element into the page builder, without seeing behind the scenes where that adds a new <div>
    • I think this is how it works 🤓
July 27

Navbar

  • First up: trying to figure out how to make a navbar. I'm not seeing anything obvious, but I have an idea.
  • Did the obvious thing to put logo in upper left corner, and menu items on right, like so:
notion image
  • Which gives me this:
notion image
→ so the structure is there, but it's non-functional. → next up: create proper alignment and the navbar elements clickable links.
  • I'll also need to figure out how to separate from the page elements because they need different treatment.

Navbar inside .notion-header

Stopped hiding the .notion-header and working with that.
  • I need to stop for the day, and what I have now is:
    • .notion-header .breadcrumb.active { background: red; }

Current code situation and tomorrow to-do

Figure out how to put image inside the proper html element (maybe ask Dad)
get navbar element to padding-top:0 (there's currently a tiny space)
Inspect potion.so's navbar to see how they structured it and what containers it's using
notion image
 
July 26
Decided to rebuild my personal website instead for these reasons:
  • already have the content/copy in place so I can focus on manipulating elements instead of making design decisions
  • since I plan on creating multiple side projects, I'll need multiple websites, and it would be ideal to be able to host them all on Potion's generous multi-site plan
  • Posting my recent work manifesto to Webflow, I realized there's a certain amount of friction uploading it, formatting it correctly etc. → this would all be removed by using Notion as my CMS.
    • Since my new work plan is going to require lots of content creation, I think it's a wise move to remove as much friction as possible.
What I'm copying
notion image
What I'm starting with (the Notion page as Potion displays it)
notion image
Tips
  • When working with the Chrome inspector, make the background of each selector a different color so you can easily see which one is which.
Current code state
<link rel="stylesheet" href="https://use.typekit.net/teh1xka.css">
<style> .notion-viewport { padding: 0; }
.notion-header { display: none; }
.notion-title { display: none; }
.notion-app { background: #f8f7f4; }
What I've done
notion-frame {
display: flex;
flex-direction: column;
width: 100vw;
height: 100%;
background: darksalmon;
}
notion-page-content-inner {
position: relative;
display: flex;
flex-direction: column;
align-items: flex-start;
width: 80vw;
background: bisque;
margin-left: auto;
margin-right: auto;
}
July 19
Currently have this → I'm happy with the centered content and width of elements, but the way it's structured means that I can't have the sections
notion image
/* inner container width */
.notion-page-content-inner { width: 80vw; max-width: 700px; margin-left: auto; margin-right: auto; }
July 17
What I did today
  • added Adobe Fonts to the site
    • Go to "my fonts" on adobe fonts → web projects → Copy link <link rel="stylesheet....> → add to snippet injection on Potion
      • notion image
        Click "Edit Project" on right → copy "font-family: new-spirit, serif;" (or whatever the name of your font is
        notion image
        → add this to the CSS selector in Potion snippet injection (as below) along with other styles for the text
        notion image
July 14
  • Centered content and controlled width with this snippet:
    • /* inner container width */
      .notion-page-content-inner { width: 80vw; max-width: 700px; margin-left: auto; margin-right: auto; }
  • Result:
notion image
July 12
Decided to work with Potion first. Simple reason: their plan has an option for 3-8 sites for around the same that I'm currently paying for my one Webflow site. I have several ideas for side projects so this seems like a good option.
I prefer the UI of Super.so and the resulting websites in their gallery look better, but I assume that this is a result of who's making them and not the platform capabilities.
Got a free trial and will see what I can do in a week!
4:35pm. What I got done today.
  • connected an unused domain (margaretryland.com) to use for this experiment. If I decide to move ahead I'll buy a proper domain, but I want to be as "scrappy" as possible, and avoid my past habits of buying domains that I don't use. Instead validating the idea, even just with my own action.
  • Looked at the code of other templates in the shop to familiarize myself with how the classes are named for Notion.
  • Learned a lot reading the CSS of the other templates.
  • Spent lots of time in Chrome inspect trying to figure out how to target specific elements
  • Read a few things on w3schools.com about CSS and how to make things happen
  • Image:
notion image
  • It doesn't look like much, but it's slow wrapping my head around CSS and how to properly structure things.
  • Removed upper left header and page title with this snippet:
    • .notion-header { display: none; }
      .notion-title { display: none;
      • Result:
      notion image
Questions from today:
  • Is it possible to have distinct vertical sections, with different backgrounds?
  • How to add elements to the background?
  • How to make a section full width? I.e. 100vw.