Skip to content
Open Source Libraries

Open Source Libraries

Poemtry.com is built with a variety of open source libraries, frameworks, tools, and themes.

This document lists the main open source software used across the poemtry.com frontend, backend, mobile, and documentation projects.


Table of Contents


Frontend

React

React is used to build the user interface of Poemtry.com.

  • Package: react
  • Version: 19.2.8
  • Purpose: UI development

Related packages:

  • react-dom — React DOM rendering
  • react-icons — Icon components

Next.js

Next.js is the main web framework used by Poemtry.com.

  • Package: next
  • Version: 16.3.0

Used for:

  • Application routing
  • Server-side rendering
  • Static generation
  • Production builds
  • Web application infrastructure

Chakra UI

Chakra UI provides the component and styling system used throughout the application.

  • Package: @chakra-ui/react
  • Version: 3.36.1

Emotion

Emotion is used as part of the styling infrastructure.

  • Package: @emotion/react
  • Version: 11.14.0

Next Themes

Used for managing application themes such as light and dark mode.

  • Package: next-themes
  • Version: 0.4.6

Apollo Client

Apollo Client is used by the frontend to communicate with the GraphQL API.

  • Package: @apollo/client
  • Version: 4.2.10

Next.js integration:

  • @apollo/client-integration-nextjs

Mobile / iOS

Poemtry.com also uses open source libraries in its iOS application.

Apollo

Apollo is used for GraphQL communication in the iOS application.

  • Package: Apollo
  • Version: 2.1.2

Used for:

  • GraphQL queries
  • GraphQL mutations
  • API communication
  • Managing GraphQL data

AppRouter

AppRouter is used to provide application routing and navigation functionality in the iOS application.

  • Package: AppRouter
  • Version: 1.0.4

Used for:

  • Application navigation
  • Route management
  • Screen transitions

KeychainSwift

KeychainSwift provides a convenient interface for securely storing sensitive application data in the iOS Keychain.

  • Package: KeychainSwift
  • Version: 24.0.0

Used for:

  • Secure credential storage
  • Authentication tokens
  • Persistent sensitive data

SDWebImage

SDWebImage is used for asynchronous image loading and caching.

  • Package: SDWebImage
  • Version: 5.21.7

Used for:

  • Remote image loading
  • Image caching
  • Asynchronous image downloads
  • Image processing

SDWebImageSwiftUI

SDWebImageSwiftUI provides SwiftUI integration for SDWebImage.

  • Package: SDWebImageSwiftUI
  • Version: 3.1.4

Used for:

  • Loading remote images in SwiftUI
  • Image caching
  • Asynchronous image rendering

Backend & API

Apollo Server

Apollo Server is used to build and serve the GraphQL API.

  • Package: @apollo/server
  • Version: 5.5.1

GraphQL

GraphQL is the primary API query language used by Poemtry.com.

  • Package: graphql
  • Version: 17.0.2

Additional GraphQL tooling:

  • graphql-tag — GraphQL document parsing and tagging

GraphQL Code Generator

GraphQL Code Generator is used to generate TypeScript types and resolver types from the GraphQL schema.

Packages:

  • @graphql-codegen/cli
  • @graphql-codegen/typescript
  • @graphql-codegen/typescript-resolvers

This helps maintain type safety between the GraphQL schema, API resolvers, and TypeScript code.


Database & Storage

Cassandra Driver

The official Cassandra driver is used for communication with the Cassandra database.

  • Package: cassandra-driver
  • Version: 4.9.0

Used for:

  • Database connections
  • Queries
  • Data persistence

AWS SDK for JavaScript

The AWS SDK is used for Amazon S3 integration.

Packages:

  • @aws-sdk/client-s3
  • @aws-sdk/s3-request-presigner

Used for:

  • Uploading files to S3
  • Accessing S3 objects
  • Generating presigned URLs

DataLoader

DataLoader is used to optimize data fetching, particularly in GraphQL resolvers.

  • Package: dataloader
  • Version: 2.2.3

Used for:

  • Batching database requests
  • Reducing duplicate queries
  • Improving GraphQL resolver performance

Validation & Utilities

Zod

Zod is used for runtime schema validation and type-safe data validation.

  • Package: zod
  • Version: 4.4.3

Used for:

  • API input validation
  • Runtime validation
  • Schema definitions

ULID

ULID is used to generate unique, sortable identifiers.

  • Package: ulid
  • Version: 3.0.2

dotenv

dotenv is used to load environment variables from configuration files.

  • Package: dotenv
  • Version: 17.4.2

franc

franc is used for natural language detection.

  • Package: franc
  • Version: 6.2.0

It can be used to determine the probable language of user-generated content such as poems.


UA Parser

UA Parser is used to parse user-agent information.

  • Package: ua-parser-js
  • Version: 2.0.10

Used for detecting:

  • Browser
  • Operating system
  • Device type

Negotiator

Negotiator is used for HTTP content negotiation.

  • Package: negotiator
  • Version: 1.0.0

FormatJS Intl Localematcher

Used for matching user locale preferences against the locales supported by the application.

  • Package: @formatjs/intl-localematcher
  • Version: 0.8.13

JS Cookie

Used for managing browser cookies.

  • Package: js-cookie
  • Version: 3.0.8

Server Only

Used to explicitly mark modules as server-only in Next.js applications.

  • Package: server-only
  • Version: 0.0.1

Email

Nodemailer

Nodemailer is used for sending emails from the application.

  • Package: nodemailer
  • Version: 9.0.x

Used for:

  • SMTP integration
  • Sending transactional emails
  • System notifications
  • User emails

Nodemailer is used in both the backend and frontend projects where applicable.


Development Tools

TypeScript

TypeScript is used throughout the project for static typing and type safety.

  • Package: typescript
  • Version: 7.0.2

Used in:

  • Frontend
  • Backend
  • GraphQL code generation
  • Build processes

Nodemon

Nodemon automatically restarts the Node.js application when source files change.

  • Package: nodemon
  • Version: 3.1.14

Primarily used during backend development.


Concurrently

Concurrently allows multiple development processes to run simultaneously.

  • Package: concurrently
  • Version: 10.0.4

For example, the backend development environment can run:

  • GraphQL Code Generator
  • TypeScript compiler
  • Nodemon

at the same time.


Node.js Type Definitions

TypeScript definitions for Node.js APIs.

  • Package: @types/node

These packages provide development-time type information and are not runtime dependencies.


Documentation

Hugo

Hugo is an open source static site generator.

Hugo is used for generating static documentation and content pages.

Used for:

  • Markdown-based documentation
  • Static site generation
  • Fast builds
  • Documentation websites

Hextra

Hextra is an open source documentation theme for Hugo.

It provides the visual design and documentation-oriented structure of the Hugo-based documentation site.

Features include:

  • Hugo integration
  • Markdown-based content
  • Responsive design
  • Documentation-focused navigation
  • Search support
  • Theme customization

Complete Dependency List

Backend

Dependencies

PackageVersionPurpose
@apollo/server5.5.1GraphQL API server
@aws-sdk/client-s33.1105.0AWS S3 integration
@aws-sdk/s3-request-presigner3.1105.0S3 presigned URLs
cassandra-driver4.9.0Cassandra database
dataloader2.2.3Data fetching optimization
dotenv17.4.2Environment variables
franc6.2.0Language detection
graphql17.0.2GraphQL
graphql-tag2.12.7GraphQL document parsing
nodemailer9.0.4Email delivery
ua-parser-js2.0.10User-agent parsing
ulid3.0.2Unique identifiers
zod4.4.3Runtime validation
typescript7.0.2TypeScript

Development Dependencies

PackageVersionPurpose
@graphql-codegen/cli7.2.0GraphQL code generation
@graphql-codegen/typescript6.1.0TypeScript generation
@graphql-codegen/typescript-resolvers6.1.0Resolver type generation
@types/node26.1.2Node.js types
@types/nodemailer8.0.1Nodemailer types
concurrently10.0.4Parallel development processes
nodemon3.1.14Development server reloads

Frontend

Dependencies

PackageVersionPurpose
@apollo/client4.2.10GraphQL client
@apollo/client-integration-nextjs0.14.5Apollo + Next.js integration
@chakra-ui/react3.36.1UI components
@emotion/react11.14.0Styling
@formatjs/intl-localematcher0.8.13Locale matching
js-cookie3.0.8Cookie management
negotiator1.0.0HTTP negotiation
next16.3.0Web framework
next-themes0.4.6Theme management
nodemailer9.0.5Email
react19.2.8UI library
react-dom19.2.8React DOM
react-icons5.7.0Icons
server-only0.0.1Server-only modules
zod4.4.3Validation

Development Dependencies

PackageVersionPurpose
@types/js-cookie3.0.6JS Cookie types
@types/negotiator0.6.4Negotiator types
@types/node26.2.0Node.js types
@types/nodemailer8.0.1Nodemailer types
@types/react19.2.18React types
@types/react-dom19.2.4React DOM types
typescript7.0.2TypeScript

Mobile / iOS

Dependencies

PackageVersionPurpose
Apollo2.1.2GraphQL client and API communication
AppRouter1.0.4Application routing and navigation
KeychainSwift24.0.0Secure Keychain storage
SDWebImage5.21.7Asynchronous image loading and caching
SDWebImageSwiftUI3.1.4SDWebImage integration for SwiftUI

These libraries are used by the Poemtry.com iOS application for networking, navigation, secure storage, and image handling.


Licensing

Poemtry.com uses open source software under the respective licenses of the projects listed above.

Each dependency remains subject to its own license and copyright notices.

The license information for each dependency should be verified against the package metadata and official repository before production distribution.

Where required, applicable license texts and copyright notices should be included with the distributed software.

This document is provided for informational purposes and does not replace the original license terms of any third-party software.


Acknowledgements

We would like to thank the maintainers, contributors, and communities behind the open source projects that make Poemtry.com possible.

Poemtry.com would not be possible without the work of the open source community.

Thank you to everyone who builds and maintains open source software. ❤️

Last updated on