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
- Mobile / iOS
- Backend & API
- Database & Storage
- Validation & Utilities
- Development Tools
- Documentation
- Complete Dependency List
- Licensing
- Acknowledgements
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 renderingreact-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
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
| Package | Version | Purpose |
|---|---|---|
@apollo/server | 5.5.1 | GraphQL API server |
@aws-sdk/client-s3 | 3.1105.0 | AWS S3 integration |
@aws-sdk/s3-request-presigner | 3.1105.0 | S3 presigned URLs |
cassandra-driver | 4.9.0 | Cassandra database |
dataloader | 2.2.3 | Data fetching optimization |
dotenv | 17.4.2 | Environment variables |
franc | 6.2.0 | Language detection |
graphql | 17.0.2 | GraphQL |
graphql-tag | 2.12.7 | GraphQL document parsing |
nodemailer | 9.0.4 | Email delivery |
ua-parser-js | 2.0.10 | User-agent parsing |
ulid | 3.0.2 | Unique identifiers |
zod | 4.4.3 | Runtime validation |
typescript | 7.0.2 | TypeScript |
Development Dependencies
| Package | Version | Purpose |
|---|---|---|
@graphql-codegen/cli | 7.2.0 | GraphQL code generation |
@graphql-codegen/typescript | 6.1.0 | TypeScript generation |
@graphql-codegen/typescript-resolvers | 6.1.0 | Resolver type generation |
@types/node | 26.1.2 | Node.js types |
@types/nodemailer | 8.0.1 | Nodemailer types |
concurrently | 10.0.4 | Parallel development processes |
nodemon | 3.1.14 | Development server reloads |
Frontend
Dependencies
| Package | Version | Purpose |
|---|---|---|
@apollo/client | 4.2.10 | GraphQL client |
@apollo/client-integration-nextjs | 0.14.5 | Apollo + Next.js integration |
@chakra-ui/react | 3.36.1 | UI components |
@emotion/react | 11.14.0 | Styling |
@formatjs/intl-localematcher | 0.8.13 | Locale matching |
js-cookie | 3.0.8 | Cookie management |
negotiator | 1.0.0 | HTTP negotiation |
next | 16.3.0 | Web framework |
next-themes | 0.4.6 | Theme management |
nodemailer | 9.0.5 | |
react | 19.2.8 | UI library |
react-dom | 19.2.8 | React DOM |
react-icons | 5.7.0 | Icons |
server-only | 0.0.1 | Server-only modules |
zod | 4.4.3 | Validation |
Development Dependencies
| Package | Version | Purpose |
|---|---|---|
@types/js-cookie | 3.0.6 | JS Cookie types |
@types/negotiator | 0.6.4 | Negotiator types |
@types/node | 26.2.0 | Node.js types |
@types/nodemailer | 8.0.1 | Nodemailer types |
@types/react | 19.2.18 | React types |
@types/react-dom | 19.2.4 | React DOM types |
typescript | 7.0.2 | TypeScript |
Mobile / iOS
Dependencies
| Package | Version | Purpose |
|---|---|---|
Apollo | 2.1.2 | GraphQL client and API communication |
AppRouter | 1.0.4 | Application routing and navigation |
KeychainSwift | 24.0.0 | Secure Keychain storage |
SDWebImage | 5.21.7 | Asynchronous image loading and caching |
SDWebImageSwiftUI | 3.1.4 | SDWebImage 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. ❤️