Follow

Follow
I used both Code and No-Code tools to launch my product within a weekend!

I used both Code and No-Code tools to launch my product within a weekend!

Arif Hossain's photo
Arif Hossain
ยทDec 3, 2022ยท

2 min read

Play this article

Yesterday I launched a small side project called IndieHacks and the goal was to finish this within a weekend.

Now when the time is this short, It doesn't make much sense to code the whole thing but I also can't go full no-code since this is a free project most no-code site builders require a subscription.

But I think I found a sweet spot By using Airtable as the database and NextJS. Here's how it works ๐Ÿ‘‡๐Ÿผ

Collecting & Storing Data

I placed an "Add New Product" button on the site navbar, Clicking that opens up the TallyForm widget.

Besides offering such a nice & clean UI, Tally also has some cool integrations including AirTable. So now when a user submits the form, Tally sends the data to my Aritable database.

The great thing about Airtable is it makes it really easy to access its DB data through API. That saved a lot of API building & management time from my end! ๐Ÿ˜

EXAMPLE REQUEST
curl "https://api.airtable.com/v0/YOUR_API_ID/products" \
  -H "Authorization: Bearer YOUR_API_KEY"
EXAMPLE RESPONSE
{
    "records": [
        {
            "createdTime": "2022-12-01T22:52:32.000Z",
            "fields": {
                "Alternative": "Google Forms, Typeform, Jotform",
                "Logo": "https://global-uploads.webflow.com/62014002185c7b256316ef63/6227d89b340c3b27961d2158_60e345d1f48cea70e9934764_Tally.png",
                "Website": "tally.so",
                "Name": "Tally",
                "Twitter Handle": "TallyForms",
            }
        },
        {
            "createdTime": "2022-12-02T12:26:34.000Z",
            "fields": {
                "Alternative": "MicroAcquire",
                "Logo": "https://storage.googleapis.com/indie-hackers.appspot.com/product-avatars/acquirebase/200x200_acquirebase.webp?1669984457278",
                "Website": "acquirebase.com",
                "Name": "AcquireBase",
                "Twitter Handle": "acquirebase",
            }
        },
    ],
}

Retrieving Data & UI

I wrote this getStaticProps function to call the Airtable API which will revalidate every 10min. Now I wanted to only show the data that is published/reviewed by me but couldn't find exactly what I was looking for, so I added and extra look that I'm not very proud of ๐Ÿฅฒ


export async function getStaticProps() {
  const res = await axios.get(
    'https://api.airtable.com/v0/YOUR_API_ID/products',
    {
      headers: {
        Authorization: 'Bearer YOUR_API_TOKEN',
      },
    }
  );
  const data = res.data.records.filter(
    (pro) => pro.fields.Status === 'Published'
  );

  return {
    props: {
      products: res.data ? data : [],
    },
    revalidate: 60 * 10,
  };
}

Then I just looped through the data in UI and with TailwindCSS, made the site look like this.

Analytics

Umami is definitely one of my favorite website analytics tools. Besides being open source they have a very flawless way to self-host.

So thanks to umami & RaiIway was quickly able setup the analytics. Here's a sharable link in case you wanna check it out ๐Ÿ‘‰https://analytics.indiehacks.link/share/NZkL6cYS/IndieHacks

Thanks for reading, Feel free to visit IndieHacks. We will soon launch on Product Hunt. So would really appreciate your support.

ย 
Share this