๐ŸŽŠFreehold

Solana NFTs made easy

๐Ÿ”ฎ Overview

Freehold is an NFT service that aims to make the creation and exploration of NFTs on the Solana blockchain as easy as possible. While existing solutions predominantly focus on catering to generative art projects, Freehold is focused on unlocking the utility of NFTs.

Current features include:

  • A simple UI for creating NFTs with custom metadata

  • Automatic collection verification

  • Easily find owned and created NFTs

  • Token-gated experience facilitation

  • An easy-to-use API that enables automated edition printing

As an example of the last bullet point above, Rhove utilizes Freehold's API to reward investors on its platform with an editioned NFT commemorating their investment. A separate party could then also utilize Freehold's API to filter a user's owned NFTs to just those matching the Rhove collection and provide additional utility if there's a match.

There are big plans in store for Freehold's future. View our Roadmap section to learn more.

๐Ÿง‘โ€๐Ÿ’ป Running Locally

In order to run this repository locally, you must first copy the contents of .env.sample to .env.local. The only required environment variables are NEXT_PUBLIC_RPC_DEVNET and NEXT_PUBLIC_RPC_MAINNET_BETA which have the publicly available RPC nodes from the Solana Foundation included by default.

If you wish to utilize the built-in API, the SOLANA_PRIVATE_KEY variable will also need set. To prevent unauthorized access to the endpoints that interact with that private key, basic auth credentials can be set via the BASIC_AUTH_USER and BASIC_AUTH_PASSWORD variables.

Once .env.local is set up, simply start the local server with:

next dev

You should see your environment variables being loaded as well as confirmation that the server is now running on http://localhost:3000.

ready - started server on 0.0.0.0:3000, url: http://localhost:3000
info  - Loaded env from [...]/freehold/.env.local
wait  - compiling...
event - compiled client and server successfully in 1770 ms (1813 modules)

๐Ÿ“‘ Repository Structure

Top-level directories:

โ”œโ”€โ”€ components/      # Reusable React components
โ”œโ”€โ”€ contexts/        # Custom React contexts
โ”œโ”€โ”€ pages/           # File-based page routing, see next.js docs for more info
โ”‚    โ””โ”€โ”€ api/        # File-based API endpoints, see next.js docs for more info
โ”œโ”€โ”€ public/          # Publicly available files such as images and logos
โ”œโ”€โ”€ styles/          # Theming related files (light mode, dark mode, and global)
โ””โ”€โ”€ utils/           # Utility functions for the API

Notes and resources:

  • Next.js file-based page routing and API endpoints

  • Filenames beginning with an underscore within the pages/ directory are excluded from showing up as a page or API endpoint

  • The utils/ directory includes functions that are able to be used within the API endpoint files (which cannot utilize contexts or hooks as they are not React components)

๐Ÿฆพ Tech Stack

Library

Repository link

Description

Next.js

React framework

NextUI

UI component library and theming

React Icons

Iconography

Metaplex

NFT SDK

Solflare

PFP program and SDK

Solana Labs

Walllet Adapter

Vercel

Hosting and deployments

๐Ÿš€ Roadmap

Here's a sneak peek of what we plan to grow Freehold into:

Have an idea that isn't listed here? We'd love to hear about it! Please create a post in the discussion board.

Last updated