DEV Community

Cover image for I'm Building a Full-Stack App: Here Are the Libraries I'm Going to Use...
Anmol Baranwal for CopilotKit

Posted on

I'm Building a Full-Stack App: Here Are the Libraries I'm Going to Use...

There are countless frameworks and libraries that you can use to improve your full-stack application.

We will cover exciting concepts like in-app notifications, making videos with react, and from email API for developers to creating interactive music in a browser.

Let's get started then.

(Don't forget to star these libraries to show them your support).

Image description

Star ⭐️


1. CopilotKit - AI Copilots for your product in hours.

copilotKit

 

You can integrate key AI features into React apps using two React components. They also provide built-in (fully-customizable) Copilot-native UX components like <CopilotKit />, <CopilotPopup />, <CopilotSidebar />, <CopilotTextarea />.

Get started with the following npm command.

npm i @copilotkit/react-core @copilotkit/react-ui @copilotkit/react-textarea
Enter fullscreen mode Exit fullscreen mode

This is how you can integrate a CopilotTextArea.

import { CopilotTextarea } from "@copilotkit/react-textarea";
import { useState } from "react";

export function SomeReactComponent() {
  const [text, setText] = useState("");

  return (
    <>
      <CopilotTextarea
        className="px-4 py-4"
        value={text}
        onValueChange={(value: string) => setText(value)}
        placeholder="What are your plans for your vacation?"
        autosuggestionsConfig={{
          textareaPurpose: "Travel notes from the user's previous vacations. Likely written in a colloquial style, but adjust as needed.",
          chatApiConfigs: {
            suggestionsApiConfig: {
              forwardedParams: {
                max_tokens: 20,
                stop: [".", "?", "!"],
              },
            },
          },
        }}
      />
    </>
  );
}
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

The basic idea is to build AI Chatbots in minutes that can be useful for LLM-based full-stack applications.

Star CopilotKit ⭐️


2. Storybook - UI development, testing, and documentation made easy.

storybook

 

Storybook is a frontend workshop for building UI components and pages in isolation. It helps in UI development, testing, and documentation.

They have 57k+ commits, 81k+ stars, and 1300+ releases on GitHub.

This is how you can create a simple component for your project.

import type { Meta, StoryObj } from '@storybook/react';

import { YourComponent } from './YourComponent';

//👇 This default export determines where your story goes in the story list
const meta: Meta<typeof YourComponent> = {
  component: YourComponent,
};

export default meta;
type Story = StoryObj<typeof YourComponent>;

export const FirstStory: Story = {
  args: {
    //👇 The args you need here will depend on your component
  },
};
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

These days UIs are painful to debug because they’re entangled in business logic, interactive states, and app context.

Storybook provides an isolated iframe to render components without interference from app business logic and context. That helps you focus development on each variation of a component, even the hard-to-reach edge cases.

Star Storybook ⭐️


3. Appwrite - Your backend minus the hassle.

appwrite

list of sdks with appwrite

 

Appwrite's open-source platform lets you add Auth, DBs, Functions, and Storage to your product & build any application at any scale, own your data, and use your preferred coding languages and tools.

They have great contributing guidelines and even go to the trouble of explaining architecture in detail.

Get started with the following npm command.

npm install appwrite
Enter fullscreen mode Exit fullscreen mode

You can create a login component like this.

"use client";
import { useState } from "react";
import { account, ID } from "./appwrite";

const LoginPage = () => {
  const [loggedInUser, setLoggedInUser] = useState(null);
  const [email, setEmail] = useState("");
  const [password, setPassword] = useState("");
  const [name, setName] = useState("");

  const login = async (email, password) => {
    const session = await account.createEmailSession(email, password);
    setLoggedInUser(await account.get());
  };

  const register = async () => {
    await account.create(ID.unique(), email, password, name);
    login(email, password);
  };

  const logout = async () => {
    await account.deleteSession("current");
    setLoggedInUser(null);
  };

  if (loggedInUser) {
    return (
      <div>
        <p>Logged in as {loggedInUser.name}</p>
        <button type="button" onClick={logout}>
          Logout
        </button>
      </div>
    );
  }

  return (
    <div>
      <p>Not logged in</p>
      <form>
        <input
          type="email"
          placeholder="Email"
          value={email}
          onChange={(e) => setEmail(e.target.value)}
        />
        <input
          type="password"
          placeholder="Password"
          value={password}
          onChange={(e) => setPassword(e.target.value)}
        />
        <input
          type="text"
          placeholder="Name"
          value={name}
          onChange={(e) => setName(e.target.value)}
        />
        <button type="button" onClick={() => login(email, password)}>
          Login
        </button>
        <button type="button" onClick={register}>
          Register
        </button>
      </form>
    </div>
  );
};

export default LoginPage;
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

Appwrite makes it very easy to build scalable backend applications with extended features out of the box.

Star Appwrite ⭐️


4. Wasp - Rails-like framework for react, node.js, and prisma.

wasp

 

The fastest way to develop full-stack web apps with React & Node.js. This is not an idea but rather a different way to build crazy fast full-stack applications.

This is how you can integrate it into a component.

import getRecipes from "@wasp/queries/getRecipes";
import { useQuery } from "@wasp/queries";
import type { User } from "@wasp/entities";

export function HomePage({ user }: { user: User }) {
  // Due to full-stack type safety, `recipes` will be of type `Recipe[]` here.
  const { data: recipes, isLoading } = useQuery(getRecipes); // Calling our query here!

  if (isLoading) {
    return <div>Loading...</div>;
  }

  return (
    <div>
      <h1>Recipes</h1>
      <ul>
        {recipes ? recipes.map((recipe) => (
          <li key={recipe.id}>
            <div>{recipe.title}</div>
            <div>{recipe.description}</div>
          </li>
        )) : 'No recipes defined yet!'}
      </ul>
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

Star Wasp ⭐️


5. Novu - Add in-app notifications to your app!

novu

 

Novu provides an open source notification infrastructure with a fully functional embedded notification center.

This is how you can create a novu component with React for in-app notifications.

import {
  NovuProvider,
  PopoverNotificationCenter,
  NotificationBell,
} from "@novu/notification-center";

function App() {
  return (
    <>
      <NovuProvider
        subscriberId={process.env.REACT_APP_SUB_ID}
        applicationIdentifier={process.env.REACT_APP_APP_ID}
      >
        <PopoverNotificationCenter>
          {({ unseenCount }) => <NotificationBell unseenCount={unseenCount} />}
        </PopoverNotificationCenter>
      </NovuProvider>
    </>
  );
}

export default App;
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

Star Novu ⭐️


6. Remotion - Make videos programmatically with React.

remotion

 

Create real MP4 videos using React, scale your video production using server-side rendering and parametrization.

Get started with the following npm command.

npm init video
Enter fullscreen mode Exit fullscreen mode

It gives you a frame number and a blank canvas where you can render anything you want using React.

This is an example React component that renders the current frame as text.

import { AbsoluteFill, useCurrentFrame } from "remotion";
 
export const MyComposition = () => {
  const frame = useCurrentFrame();
 
  return (
    <AbsoluteFill
      style={{
        justifyContent: "center",
        alignItems: "center",
        fontSize: 100,
        backgroundColor: "white",
      }}
    >
      The current frame is {frame}.
    </AbsoluteFill>
  );
};
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

The remotion team has been famous for making a GitHub Wrapped for the last 2 years.

Star Remotion ⭐️


7. NocoDB - Alternative of Airtable.

NocoDB

 

The free and open-source replacement for Airtable is NocoDB. It makes a smart spreadsheet out of any MySQL, PostgreSQL, SQL Server, SQLite, or MariaDB database.

Its main objective is to make powerful computing tools more widely available.

Get started with the following npx command.

npx create-nocodb-app
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

NocoDB was created to give digital businesses around the world a potent open-source and no-code interface for databases.

You can import your airtable data in NocoDB very quickly.

Star NocoDB ⭐️


8. Novel - WYSIWYG editor with AI-powered autocompletion.

novel

It uses Next.js, Vercel AI SDK, Tiptap as a text editor.

 

Get started with the following npm command.

npm i novel
Enter fullscreen mode Exit fullscreen mode

This is how you can use it. There are multiple options available for improving your application.

import { Editor } from "novel";

export default function App() {
  return <Editor />;
}
Enter fullscreen mode Exit fullscreen mode

Star Novel ⭐️


9. Blitz - Missing full-stack toolkit for NextJS.

blitz

 

Blitz picks up where Next.js leaves off, providing battle-tested libraries and conventions for shipping and scaling worldwide applications.

Get started with the following npm command.

npm install -g blitz
Enter fullscreen mode Exit fullscreen mode

This is how you can build a new page with Blitz.

const NewProjectPage: BlitzPage = () => {
  const router = useRouter()
  const [createProjectMutation] = useMutation(createProject)

  return (
    <div>
      <h1>Create New Project</h1>

      <ProjectForm
        submitText="Create Project"
        schema={CreateProject}
        onSubmit={async (values) => {
          // This is equivalent to calling the server function directly
          const project = await createProjectMutation(values)
          // Notice the 'Routes' object Blitz provides for routing
          router.push(Routes.ProjectsPage({ projectId: project.id }))
        }}
      />
    </div>
  );
};

NewProjectPage.authenticate = true
NewProjectPage.getLayout = (page) => <Layout>{page}</Layout>

export default NewProjectPage
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

It improves the building by several folds.

blitz

Star Blitz ⭐️


10. Supabase - open source Firebase alternative.

supabase

 

Most of us would already expect supabase to be here because it's just too great.

Get started with the following npm command (Next.js).

npx create-next-app -e with-supabase
Enter fullscreen mode Exit fullscreen mode

This is how you can create a user using supabase.

import { createClient } from '@supabase/supabase-js'

// Initialize 
const supabaseUrl = 'https://chat-room.supabase.co'
const supabaseKey = 'public-anon-key'
const supabase = createClient(supabaseUrl, supabaseKey)

// Create a new user
const { user, error } = await supabase.auth.signUp({
  email: 'example@email.com',
  password: 'example-password',
})
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

You can build a crazy fast application with Auth, realtime, Edge functions, storage, and many more. Supabase covers it all!

They also provide several starting kits like AI Chatbot & Stripe Subscriptions.

Star Supabase ⭐️


11. Refine - Open source retool for enterprise.

refine

Build admin panels, dashboards & B2B apps with unmatched flexibility

 

You can set it with a single CLI command in under a minute.
It has connectors for 15+ backend services including Hasura, Appwrite, and more.

Get started with the following npm command.

npm create refine-app@latest
Enter fullscreen mode Exit fullscreen mode

This is how easy it is to add a login using Refine.

import { useLogin } from "@refinedev/core";
const { login } = useLogin();
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

Star Refine ⭐️


12. Zenstack - Database to API & UI In minutes.

zenstack

A TypeScript toolkit that supercharges Prisma ORM with a powerful access control layer and unleashes its full power for full-stack development.

 

Get started with the following npx command.

npx zenstack@latest init
Enter fullscreen mode Exit fullscreen mode

This is how you can create a RESTful API through server adapters.

// pages/api/model/[...path].ts

import { requestHandler } from '@zenstackhq/next';
import { enhance } from '@zenstackhq/runtime';
import { getSessionUser } from '@lib/auth';
import { prisma } from '@lib/db';

// Mount Prisma-style APIs: "/api/model/post/findMany", "/api/model/post/create", etc.
// Can be configured to provide standard RESTful APIs (using JSON:API) instead.
export default requestHandler({
    getPrisma: (req, res) => enhance(prisma, { user: getSessionUser(req, res) }),
});
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

Star Zenstack ⭐️


13. Buildship - Low-code visual backend builder.

buildship

 

For the apps you are building, with no-code app builders (FlutterFlow, Webflow, Framer, Adalo, Bubble, BravoStudio...) or frontend frameworks (Next.js, React, Vue...), you need a backend to support scalable APIs, secure workflows, automation, etc. BuildShip gives you a completely visual way to build these backend tasks scalably in an easy-to-use fully hosted experience.

This means you don't need to wrangle or deploy things on the cloud platform, perform DevOps, etc. Just Build and Ship, instantly 🚀

Star Buildship ⭐️


14. Taipy - Data and AI algorithms into production-ready web applications.

taipy

 

Taipy is an open-source Python library for easy, end-to-end application development,
featuring what-if analyses, smart pipeline execution, built-in scheduling, and deployment tools.

Get started with the following command.

pip install taipy
Enter fullscreen mode Exit fullscreen mode

This is a typical Python function, and the only task used in the filter scenario.

def filter_genre(initial_dataset: pd.DataFrame, selected_genre):
    filtered_dataset = initial_dataset[initial_dataset['genres'].str.contains(selected_genre)]
    filtered_data = filtered_dataset.nlargest(7, 'Popularity %')
    return filtered_data
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

They also have a lot of demo app tutorials that you can build.

Star Taipy ⭐️


15. LocalForage - Offline storage improved.

localforage

 

LocalForage is a JavaScript library that improves the offline experience of your web app by using an asynchronous data store with a simple, localStorage-like API. It allows developers to store many types of data instead of just strings.

Get started with the following npm command.

npm install localforage
Enter fullscreen mode Exit fullscreen mode

Simply include the JS file and start using localForage.

<script src="localforage.js"></script>
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

Star LocalForage ⭐️


16. Zod - TypeScript-first schema validation with static type inference.

zod

 

Zod aims to be developer-friendly by minimizing duplicate type declarations. With Zod, you declare a validator once, and Zod will automatically infer the static TypeScript type. It's easy to compose simpler types into complex data structures.

Get started with the following npm command.

npm install zod
Enter fullscreen mode Exit fullscreen mode

This is how you can customize some common error messages when creating a string schema.

const name = z.string({
  required_error: "Name is required",
  invalid_type_error: "Name must be a string",
});
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

It Works in Node.js and all modern browsers

Star Zod ⭐️


17. Doppler - manage your secrets.

doppler

 

You can eliminate secrets sprawl by organizing your secrets in projects with development, staging, and production environments.

Get started with the following command (MacOS).

$ brew install dopplerhq/cli/doppler
$ doppler --version
Enter fullscreen mode Exit fullscreen mode

This is GitHub Actions workflow to install Doppler CLI.

You can read the docs.

name: Example action

on: [push]

jobs:
  my-job:
    runs-on: ubuntu-latest
    steps:
      - name: Install CLI
        uses: dopplerhq/cli-action@v3
      - name: Do something with the CLI
        run: doppler secrets --only-names
        env:
          DOPPLER_TOKEN: ${{ secrets.DOPPLER_TOKEN }}
Enter fullscreen mode Exit fullscreen mode

Star DopplerHQ ⭐️


18. FastAPI - High performance, easy to learn, fast to code, ready for production.

FastAPI

 

FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.8+ based on standard Python type hints.

Get started with the following command.

$ pip install fastapi
Enter fullscreen mode Exit fullscreen mode

This is how you can start working with FastAPI.

from typing import Union

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}
Enter fullscreen mode Exit fullscreen mode

Your editor will auto-complete the attributes and know their types which is one of the best features of working with FastAPI.

You can read the docs.

Star FastAPI ⭐️


19. Flowise - Drag & drop UI to build your customized LLM flow.

flowise

 

Flowise is an open source UI visual tool to build your customized LLM orchestration flow & AI agents.

Get started with the following npm command.

npm install -g flowise
npx flowise start
OR
npx flowise start --FLOWISE_USERNAME=user --FLOWISE_PASSWORD=1234
Enter fullscreen mode Exit fullscreen mode

This is how you integrate the API.

import requests

url = "/api/v1/prediction/:id"

def query(payload):
  response = requests.post(
    url,
    json = payload
  )
  return response.json()

output = query({
  question: "hello!"
)}
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

Star Flowise ⭐️


20. Scrapy - a fast high-level web crawling & scraping framework for Python..

Scrapy

 

Scrapy is a fast high-level web crawling and web scraping framework, used to crawl websites and extract structured data from their pages. It can be used for a wide range of purposes, from data mining to monitoring and automated testing.

Get started with the following command.

 pip install scrapy
Enter fullscreen mode Exit fullscreen mode

Build and run your web spiders.

 pip install scrapy
 cat > myspider.py <<EOF
import scrapy

class BlogSpider(scrapy.Spider):
    name = 'blogspider'
    start_urls = ['https://www.zyte.com/blog/']

    def parse(self, response):
        for title in response.css('.oxy-post-title'):
            yield {'title': title.css('::text').get()}

        for next_page in response.css('a.next'):
            yield response.follow(next_page, self.parse)
EOF
 scrapy runspider myspider.py
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

It has around 50k+ Stars so a huge credibility to the web scraping.

Star Scrapy ⭐️


21. Tone - Make interactive music in the browser.

Tone.js

 

Get started with the following npm command.

npm install tone
Enter fullscreen mode Exit fullscreen mode

This is how you can start with Tone.js

// To import Tone.js:
import * as Tone from 'tone'

//create a synth and connect it to the main output (your speakers)
const synth = new Tone.Synth().toDestination();

//play a middle 'C' for the duration of an 8th note
synth.triggerAttackRelease("C4", "8n");
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

Star Tone ⭐️


22. Spacetime - lightweight javascript timezone library.

spacetime

 

You can calculate time in remote timezones; support daylight savings, leap years, and hemispheres. Orient time by quarter, season, month, week..

Get started with the following npm command.

npm install spacetime
Enter fullscreen mode Exit fullscreen mode

This is how you can use it.

<script src="https://unpkg.com/spacetime"></script>
<script>
  var d = spacetime('March 1 2012', 'America/New_York')
  //set the time
  d = d.time('4:20pm')

  d = d.goto('America/Los_Angeles')
  d.time()
  //'1:20pm'
</script>
Enter fullscreen mode Exit fullscreen mode

Star Spacetime ⭐️


23. Mermaid - Generate diagrams from markdown-like text.

mermaid

 

You can generate diagrams like flowcharts or sequence diagrams from text like Markdown with Mermaid.

This is how you can create a diagram.

sequenceDiagram
Alice->>John: Hello John, how are you?
loop Healthcheck
    John->>John: Fight against hypochondria
end
Note right of John: Rational thoughts!
John-->>Alice: Great!
John->>Bob: How about you?
Bob-->>John: Jolly good!
Enter fullscreen mode Exit fullscreen mode

It will make the following diagram.

diagram

You can read the docs and the plugin for VS Code.

See an example in the live editor.

Star Mermaid ⭐️


24. Public APIs - 1400+ APIs in 20+ categories.

public apis

 

We mostly use external APIs for building an application, here you can find a list of all the APIs. The website link is at the end.

It has around 279k+ stars on GitHub.

public apis

It is insanely hard to hard to get the website link from the repository. So, I'm pasting it here.

Website - collective-api.vercel.app/

Star Public APIs ⭐️


25. Framer Motion - animations that work like magic.

framer motion

 

One of the most powerful animation libraries available.
Framer uses simple declarative syntax means you write less code. Less code means your codebase is easier to read and maintain.

You can create events and gestures, and the community using Framer is big meaning good support.

Get started with the following npm command.

npm install framer-motion
Enter fullscreen mode Exit fullscreen mode

This is how you can use it.

import { motion } from "framer-motion"

<motion.div
  whileHover={{ scale: 1.2 }}
  whileTap={{ scale: 1.1 }}
  drag="x"
  dragConstraints={{ left: -100, right: 100 }}
/>
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

Star Framer Motion ⭐️


26. Btw - set up your personal blog in minutes.

btw

 

You can sign up and use btw without installing anything. You can also use the open source version to self-host.

btw

A sample blog built using btw.

Star Btw ⭐️


27. Formbricks - open source survey platform.

Formbricks

 

Formbricks provides a free and open source surveying platform. Gather feedback at every point in the user journey with beautiful in-app, website, link, and email surveys. Build on top of Formbricks or leverage prebuilt data analysis capabilities.

Get started with the following npm command.

npm install @formbricks/js
Enter fullscreen mode Exit fullscreen mode

This is how you can start using formbricks.

import formbricks from "@formbricks/js";

if (typeof window !== "undefined") {
  formbricks.init({
    environmentId: "claV2as2kKAqF28fJ8",
    apiHost: "https://app.formbricks.com",
  });
}
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

Star Formbricks ⭐️


28. Stripe - payment infrastructure.

Stripe

 

Millions of companies of all sizes use Stripe online and in person to accept payments, send payouts, automate financial processes, and ultimately grow revenue.

Get started with the following npm command (React.js).

npm install @stripe/react-stripe-js @stripe/stripe-js
Enter fullscreen mode Exit fullscreen mode

This is how you can use hooks.

import React, {useState} from 'react';
import ReactDOM from 'react-dom';
import {loadStripe} from '@stripe/stripe-js';
import {
  PaymentElement,
  Elements,
  useStripe,
  useElements,
} from '@stripe/react-stripe-js';

const CheckoutForm = () => {
  const stripe = useStripe();
  const elements = useElements();

  const [errorMessage, setErrorMessage] = useState(null);

  const handleSubmit = async (event) => {
    event.preventDefault();

    if (elements == null) {
      return;
    }

    // Trigger form validation and wallet collection
    const {error: submitError} = await elements.submit();
    if (submitError) {
      // Show error to your customer
      setErrorMessage(submitError.message);
      return;
    }

    // Create the PaymentIntent and obtain clientSecret from your server endpoint
    const res = await fetch('/create-intent', {
      method: 'POST',
    });

    const {client_secret: clientSecret} = await res.json();

    const {error} = await stripe.confirmPayment({
      //`Elements` instance that was used to create the Payment Element
      elements,
      clientSecret,
      confirmParams: {
        return_url: 'https://example.com/order/123/complete',
      },
    });

    if (error) {
      // This point will only be reached if there is an immediate error when
      // confirming the payment. Show error to your customer (for example, payment
      // details incomplete)
      setErrorMessage(error.message);
    } else {
      // Your customer will be redirected to your `return_url`. For some payment
      // methods like iDEAL, your customer will be redirected to an intermediate
      // site first to authorize the payment, then redirected to the `return_url`.
    }
  };

  return (
    <form onSubmit={handleSubmit}>
      <PaymentElement />
      <button type="submit" disabled={!stripe || !elements}>
        Pay
      </button>
      {/* Show error message to your customers */}
      {errorMessage && <div>{errorMessage}</div>}
    </form>
  );
};

const stripePromise = loadStripe('pk_test_6pRNASCoBOKtIshFeQd4XMUh');

const options = {
  mode: 'payment',
  amount: 1099,
  currency: 'usd',
  // Fully customizable with appearance API.
  appearance: {
    /*...*/
  },
};

const App = () => (
  <Elements stripe={stripePromise} options={options}>
    <CheckoutForm />
  </Elements>
);

ReactDOM.render(<App />, document.body);
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

You can integrate almost anything. It has a huge list of options.

integrate

Star Stripe ⭐️


29. Upscayl - open source AI image upscaler.

upscayl

 

Free and Open Source AI Image Upscaler for Linux, MacOS, and Windows built with Linux-First philosophy.
It might not be related to full-stack, but it can be useful for upscaling your images.

upscayl

With state-of-the-art AI, Upscayl helps you turn low-resolution images into high resolution. Crisp and sharp!

Star Upscayl ⭐️


30. Resend - Email API for developers.

resend

 

You can build and send emails using React. One of the most hyped products of 2023.

Get started with the following npm command.

npm install @react-email/components -E
Enter fullscreen mode Exit fullscreen mode

This is how you can integrate it with a next.js project.

import { EmailTemplate } from '@/components/email-template';
import { Resend } from 'resend';

const resend = new Resend(process.env.RESEND_API_KEY);

export async function POST() {
  const { data, error } = await resend.emails.send({
    from: 'onboarding@resend.dev',
    to: 'delivered@resend.dev',
    subject: 'Hello world',
    react: EmailTemplate({ firstName: 'John' }),
  });

  if (error) {
    return Response.json({ error });
  }

  return Response.json(data);
}
Enter fullscreen mode Exit fullscreen mode

You can read the docs.

resend

The basic idea is a simple, elegant interface so you can start sending emails in minutes. It fits right into your code with SDKs for your favorite programming languages.

Star Resend ⭐️


Whew! Such a long list of projects.

I know you have more ideas, share them, and let's build together :D

It is not hard to build full-stack applications these days, but every application can increase that unique factor just by using good open-source projects effectively to solve any problem.
For instance, you can build something that gives notifications or makes a UI flow to scrape the data.

I hope some will be useful for you in your developer journey. These have a top-notch Developer experience; you can depend on them.

Since you will be building stuff, here you can find some crazy ideas.

Have a great day! Till next time.

Top comments (45)

Collapse
 
terabytetiger profile image
Tyler V. (he/him)

What's the use case for including all of:

  • Appwrite
  • NocoDB
  • Supabase
  • Zenstack
  • Buildship

I feel like there's a lot of overlap in these, but I'm more Frontend focused so I'd love to know more about the intent here 😊

Collapse
 
anmolbaranwal profile image
Anmol Baranwal

Each project serves a different purpose and has its own community.
Even though I've used Firebase & Supabase, each platform has unique features that make them distinct.
For instance, Buildship is different from these (for scraping or workflow using APIs).

While Appwrite and Supabase both offer backend services, they have different use cases. For instance, you cannot migrate functions from one to another (difference in DB as well). Technology keeps evolving, so there may be similarities, but it ultimately depends on your project needs and personal preference.

You can check the difference between Zenstack and NocoDB as well.

That's why I included each of them in the list -> they all bring something valuable to the table. I hope this helps :D

Collapse
 
terabytetiger profile image
Tyler V. (he/him)

I'm Building a Full-Stack App: Here Are the Libraries I'm Going to Use...

I think I'm confused - so are you not building an app using all of them like the title says? 😅

Thread Thread
 
anmolbaranwal profile image
Anmol Baranwal

If you're a developer, you would already know the answer to that.

I truly laughed when you asked if I'm going to use all 30 open source libraries. LOL! I'm definitely not that expert.

The title suggests in an appropriate way that these are the libraries I could use to build my next project. Not all! It's like you can build entire solutions considering full-stack domain with combinations of these.

Thread Thread
 
aravind profile image
Aravind Putrevu

You should change the title to say - 30 libraries I'd consider to build a full stack app in 2024

Thread Thread
 
krlz profile image
krlz

I was also hyped about it and is not so crazy to do, a big project might have it

Thread Thread
 
joelbonetr profile image
JoelBonetR 🥇

Why? 😂

Collapse
 
jeremiah_the_dev_man profile image
Jeremiah

Wow... That's a long one haha. Love it! some great libraries.

Collapse
 
anmolbaranwal profile image
Anmol Baranwal

Thanks!
Some of the libraries are truly one of a kind especially Remotion and Resend :D

Collapse
 
tinkermakar profile image
Makar

what about Wasp and Mermaid -- both sound amazing on the paper )
I guess it's a shame I hear about both the first time, but then again -- we're all on DEV to get up to date. Thanks much!

Collapse
 
reprodev profile image
Repro Dev

This is a handy list to bookmark and come back to later when I'm trying to work out what I need to use for my random projects.

Collapse
 
uliyahoo profile image
uliyahoo

Yup

Collapse
 
uliyahoo profile image
uliyahoo

This is the best Listicle I've seen on Dev. Awesome work Anmol!

Collapse
 
anmolbaranwal profile image
Anmol Baranwal

Woah! Best listicle -> that is very noble of you to say.
Thanks so much! I truly appreciate it :D

Collapse
 
steve-lebleu profile image
Steve Lebleu

In the disorder, a little bit of all:

  • Netlify
  • Vercel
  • Nx
  • Rush stack
  • Stencil
  • Turbo
  • Helios
  • Dynatrace
  • Datadog
  • Aikido
  • Jit
  • Semgrep
  • ...
Collapse
 
ranjancse profile image
Ranjan Dailata

Please read this 104k-bill before choosing the provider. In this case "Netlify".

Collapse
 
joelbonetr profile image
JoelBonetR 🥇

I keep thinking that a good'ol VPS (<10 bucks a month) is way better (100% security against "surprises").
You can always upgrade to a higher tier and if you need more than that you should've figured out how to monetize your app by then.

Thread Thread
 
fyodorio profile image
Fyodor

Yes, because most of the tools mentioned around behave crazy when scaled even a little

Collapse
 
steve-lebleu profile image
Steve Lebleu

Was not aware, thanks for the information.

Collapse
 
fastndead profile image
Umbetov Asman

Some of these libraries i have no idea why would anyone need unless for a very specific use case, like what is remotion doing on the 6th place??

Libraries that you really need for building a full-stack app are:

  1. Some UI library/framework – React/Svelte/HTMX
  2. (optional) Some backend framework for a language of your choosing. Most of the times you could just use the standard HTTP library that comes packaged with the language

that's it. No one needs 30 libraries to build a full stack app.

Collapse
 
laurensdc profile image
Laurens

This is just way too many dependencies no? I thought I was scrolling a Facebook feed 😮

I think it’s fun to use all these promising libraries but won’t this introduce a ton of pain to keep the app going and up to date?

Good writeup!

Collapse
 
greenteaisgreat profile image
Nathan G Bornstein

I think it was moreover offering options to choose from for a full stack application, based on one's own need for whatever they require. Adding all of these into a single application would absolutely be over kill.

You do make a good point about obsolescence in 3rd party packages though. That will always be an issue for external dependencies. The amount of npm packages that hundreds-of-thousands rely upon that are out of date is frightening to say the least. Doesn't stop everyone from depending on them, though 🙃

Collapse
 
efpage profile image
Eckehard • Edited

How do you manage this "bag of fleas"? Do you employ a nanny? Hopefully there is enough time left to do some work, if you are busy all the day to install and get to know all this tools....

Image description

Collapse
 
anmolbaranwal profile image
Anmol Baranwal

Haha! After all we are human and we should try to help others as much as we can.

Just to let you know, these tools are not for a "single application".
It provides a wide variety of things that you can use, for instance you can use Resend for email API (yet to try on a large scale) which got kitty awards as far as I remember.
Or you can use Remotion -> if you've seen github unwrapped.

Trust me! While using a lot of libraries may seem like overkill, creating an extraordinary solution brings a lot of happiness :D

Collapse
 
efpage profile image
Eckehard

But as long as you are not a professional tool tester, someone has to pay you to play around with all these tools. They won´t pay you for your pleasant smile!

Collapse
 
fyodorio profile image
Fyodor

Yea, one probably shouldn't delegate everything to external tools 😅

Collapse
 
shricodev profile image
Shrijal Acharya

This is a really good list of tech stacks. Great job, @anmolbaranwal. Love these! 🙌

Collapse
 
brunoelo profile image
Emeka Elo-Chukwuma

The primary aim of this article is to be bookmarked(amongst other engagements) and hopefully remembered to be revisited when working on a project.

Collapse
 
kyoukhana profile image
kyoukhana

And how many dependencies is this project going to have?

Collapse
 
kamran2121 profile image
kamran2121

It's for full stack projects in general, not a single project...

Collapse
 
nathan_tarbert profile image
Nathan Tarbert

A lot of great libraries listed here, nice article Anmol!

Collapse
 
majesticshawarma profile image
Marc Peejay V. Viernes

Awesome! I've never heard of some of these gems before. Thanks for letting me know 👍

Collapse
 
ramanujiggy profile image
Rob

I have been wondering on how to implement some things into my project, and this is very helpful.

Great article! 🙏

Collapse
 
thumbone profile image
Bernd Wechner

With all due respect I find the title somewhat misleading. I am a full stack developer. Let me illustrate what the term "full stack" means to me, but first what it doesn't mean: a survey primarily of a pile of JavaScript tools l use.

So what do I understand under "full stack" developement? Here's what I focus on:

  1. OS (typically I use Ubuntu Server but not always)
  2. Filesystems (I'm moving to btrfs on my servers slowly for more rapid recovery)
  3. Databases (I lean almost exclusively on postrgresql at present and that isn't likely to change any time soon)
  4. Webserver (I lean on lighttpd almost exclusively simply because it's foss, works well on low resource systems like routers and scales well and freshly I like consistency)
  5. Language support (I work with a variety here but uwsgi and python and venv support is common, I do a bit of PHP and even a little Node.js but I may dive into others at times as I lean on foss)

Of course there's more to most of that (not least the dev tools and publishing process etc).

So by full stack I read: from the user experience (front end, mostly html, CSS, is) down to the os and fs. That's the full stack.

I go one further as I still use bare metal so manage hand me down servers (hardware raid too).

Oh, and above all, I'm not bragging, far from it, many a sensible reader would judge dealing with the full stack let alone the extent I've laid out as unnecessary, or unusual if not futile (virtual servers are now so cheap and containerision so mature and DevOps tools abound etc). But shrug, it's what I do as in have hand me down hardware and like tinkering and learning and host NFP sites with low traffic for free.

Some comments may only be visible to logged-in visitors. Sign in to view all comments.