šŸš€ Time Traveler: A Pinata-Integrated Time Capsule for Future Explorers

programORdie - Oct 6 - - Dev Community

This is a submission for the The Pinata Challenge

What I Built

I created Time Traveler, a web application that allows users to create digital time capsules.

Users can upload various types of filesā€”images, audio, videosā€”into these capsules, which will remain locked until a specified future date.

This project integrates Pinataā€™s Files API to facilitate file uploads and storage on the IPFS network.

Key Features

  • Multi-file Upload šŸ“: Users can upload multiple file types into a single time capsule.
  • Custom Unlock Dates ā³: Each capsule has a designated unlock date for future access.
  • Intuitive Dashboard šŸ–„ļø: A user-friendly interface to view, manage, and create time capsules.
  • Responsive Design: Works seamlessly on both mobile and desktop devices.
  • User Authentication: Secure login system to ensure privacy and control over user capsules.

Technology Used

  • Next.js āš›ļø:: The entire application is built with Next.js, providing a full-stack solution for server-side rendering and API routes.
  • Pinata: Utilized Pinataā€™s Files API for decentralized file storage on IPFS.
  • MongoDB: Used for storing user data and metadata related to time capsules.
  • Tailwind CSS: For styling the application, ensuring a modern and responsive design.
  • shadcn: Leveraged for UI components, enhancing the overall user experience.

Demo

View the live demo here.

Landing page:
Landing page

New capsule creation form:
New capsule

Capsules list:
Dashboard

Capsule:
Capsule

File preview:
file preview

My Code šŸ’»

Check out the source code for the project on GitHub:

GitHub logo programORdie2 / time-traveler

Time Traveler is a web application that allows users to create digital time capsules, enabling them to upload various types of filesā€”images, audio, videosā€”and unlock them at a specified future date.

Time Traveler

Time Traveler is a web application that allows users to create digital time capsules, enabling them to upload various types of filesā€”images, documents, videosā€”and unlock them at a specified future date. This project integrates Pinataā€™s Files API to facilitate secure file uploads and storage on the IPFS network.

Table of Contents

Key Features

  • Multi-file Upload: Upload multiple file types into a single time capsule.
  • Custom Unlock Dates: Set a designated unlock date for future access.
  • Intuitive Dashboard: A user-friendly interface to manage and create time capsules.
  • Responsive Design: Fully functional on both mobile and desktop devices.
  • User Authentication: Secure login system ensuring privacy and control over user capsules.

Technology Used

  • Next.js: Full-stack framework for server-side rendering and API routes.
  • Pinata: Decentralized file storage using the Pinata Files API andā€¦

Installation

To run this project locally, follow these steps:

  • Clone the repository:
   git clone https://github.com/programORdie2/time-traveler.git
Enter fullscreen mode Exit fullscreen mode
  • Navigate to the project directory:
   cd time-traveler
Enter fullscreen mode Exit fullscreen mode
  • Install the dependencies:
   npm install
Enter fullscreen mode Exit fullscreen mode
  • Set up environment variables:
    • Rename the .env.local.sample to .env.local and fill it out with your data. The required values are:
# The secret key for verifying the integrity of signed cookies.
# Run "npx auth secret" to generate it.
AUTH_SECRET="YOUR_AUTH_SECRET"

# You probably don't want to change this, except if you changed the port. If you deploy this to Vercel, you can remove this line.
NEXTAUTH_URL="http://localhost:3000"

# Replace with your MongoDB connection string
DATABASE_URL="mongodb://localhost:27017/timecapsule"

# Replace with your Pinata details.
# See https://docs.pinata.cloud/quickstart#1-get-api-key-and-gateway-url
PINATA_JWT="YOUR_PINATA_JWT"
NEXT_PUBLIC_GATEWAY_URL="YOUR_GATEWAY_URL.mypinata.cloud"
Enter fullscreen mode Exit fullscreen mode
  • Start the development server:
   npm run dev
Enter fullscreen mode Exit fullscreen mode

More Details

Integration with Pinata šŸ”—:

  • File Uploads šŸ“¤: I utilized the Pinata API to allow users to upload files directly to IPFS.
  • Metadata Storage: The metadata for each time capsule is stored in a MongoDB database, with a reference to the files stored in Pinata.
  • Unlock Mechanism: The application checks the current date against the unlock date specified by the user, allowing access to files only when the time capsule is unlocked.

Thanks for reading! šŸŒŸ Feel free to share your thoughts in the comments below!

. . . . . . . . . . .