background

Documentation

Last modified 3/27/2024

post-image

Design

If you want to build a product you have to start with a design template that will at the very least include some information that your designers can action. I have embedded the figma that I use for every project below with some tips on how to get started.

1. Start by choosing your fonts and logos



2. Next you want to update your fonts in your project by navigating to FrontEnd/app/layout.tsx and update your fonts with the ones you have chosen in your design.


3. Once your fonts have been updated. Create your extentions for the fontFamily utility class in the tailwind.config under Frontend/tailwind.config.ts make sure to use the correct variable naming: var(--accent-font).

4. Next step is to update your theme colors based off of the design document you created in Figma. You can use the DaisyUI Theme Generator and randomize the colorscheme to if you don't care about coloring alongside the Gradient Generator to get the additional bases that tailwind doesn't supply.


Colors

Tailwind

FastPocket uses tailwind and therefore is extendable to suite your needs see Tailwind - Customizing Colors for more information.

DaisyUI

In order to make theming easy FastPocket uses DaisyUI and takes the decisions around color away from you so as to speed up the process of theming and styling to see more about how the theme is structured please see Daisy UI - Colors for more information.

JS Utility

If you want to use your colors FastPocket provides in JS utilities to quickly style based on your theme. You can use useTheme() to retreive your theme and then select the DaisyUI style for that theme. 

In this way you get a dynamic color that you can use and reuse in JS

  const { theme } = useTheme();
  const color = colors[theme ?? "light"]["base-content"];

Fonts

FastPocket includes font styling out of the box using next-font. In its simplist form here is how you can add google fonts to your project. Arimo and Raleway are arbitrary choices based on the Fast Pocket styling you can swap those out to what you need.

import { Arimo, Raleway } from "next/font/google";

const raleway = Raleway({
  variable: "--heading-font",
  subsets: ["latin"],
});

const arimo = Arimo({
  variable: "--body-font",
  subsets: ["latin"],
});
export default async function RootLayout({
  children,
}: {
  children: React.ReactNode;
}) {

  return (
    <html
      lang="en"
      className={`h-full ${raleway.variable} ${arimo.variable}`}
      suppressHydrationWarning
   / >)

FastPocket utilize CSS to set the header fonts using CSS variables this can be customized or removed as needed

h1, h2, h3, h4, h5, h6 {
  font-family: var(--heading-font);
}

FastPocket also adjust the prose in Tailwind to automatically apply the correct fonts based on blog content

      typography: {
        DEFAULT: {
          css: {
            p: {
              fontFamily: 'var(--body-font)'
            },
            h1: {
              fontFamily: 'var(--heading-font)'
            },
            h2: {
              fontFamily: 'var(--heading-font)'
            },
            h3: {
              fontFamily: 'var(--heading-font)'
            },
            h4: {
              fontFamily: 'var(--heading-font)'
            },
            h5: {
              fontFamily: 'var(--heading-font)'
            },
            h6: {
              fontFamily: 'var(--heading-font)'
            }
          }
        }
      }

Fly.io

Console

If you want to access the console for one of your containers you can use fly console 

Deploy

If you want to be able to deploy after the initial run you can use fly deploy


Stripe

Live Setup

If you want to setup Stripe for live support you need to create a restricted key

Make sure you set the following settings on the restricted key

 

Pricing pitfalls

Must setup your checkout page on stripe

Must enable all the settings on your restricted stripe key for write

Troubleshooting

Check the error logs on stripe. They can be found under Developers > Events

Check the error logs on the pocketbase instance