Skip to content

gittebe/legacy-lock

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

497 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔒 Legacy Lock

Legacy Lock is a Virtual Time Capsule app that allows users to create and store messages or media (photos, videos, text) that are to be unlocked at a future date.

Authentication ensures that only authorized people can access the content, providing a secure and personal experience for users to preserve memories or send time-locked messages.


📦 Dependencies to Install

Backend

  • Express – Web server framework
    npm install express
  • Mongoose – MongoDB Object Data Modeling
    npm install mongoose
  • Nodemon
    npm install
  • dotenv – Manages environment variables securely
    npm install dotenv

Frontend

  • React Router – Enables navigation in React
    npm install react-router-dom

🛠 Technology Stack

Frontend:

  • React for UI.

Backend:

  • Node.js with Express for API.

Database:

  • MongoDB for data storage.

Libraries & Tools:

  • React Router for navigation.
  • Zustand for global state management.
    npm install zustand

🪝 Hooks

Internal Hooks (Built-in React or Custom):

  • useState – Built-in React hook for state management.
  • useEffect – Built-in React hook for handling side effects.
  • useMemo – Built-in React hook that stores the filtered and sorted capsule list to avoid recalculations on every render.
  • It filters out only future capsules (openAt > now), and sorts capsules in ascending order (soonest first).
  • useCapsuleStatus – Custom hook to calculate the time left on locked capsules.
  • useConfetti – Custom hook for handling the confetti effect.
  • useValidation – Custom hook to validate form fields in CreateCapsule form.

External Hooks (from installed libraries):

  • useNavigate– Comes from react-router-dom (for navigation)
  • useStore – Comes from zustand (global state management)
  • useRef - For file uploading using Cloud storage.
  • useWindowSize – Comes from react-use. It dynamically gets the window width and height, ensuring that Confetti fills the entire screen.
    npm install react-use
    Read more about useWindowSize

📚 External Libraries

Date Handling:

File Upload Handling:

  • multer for handling file uploads (media files like photos and videos).
    npm install multer
    Read more about multer

Animations and effects:

☁️ Cloud storage

Cloudinary is used for Media handling.

Read more about Cloudinary

View it live

Legacy Lock App

About

technigo final project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 71.5%
  • CSS 28.2%
  • Other 0.3%