Skip to content

Our final project in the Web Dev Bootcamp – by Gitte, Kelly, and me

Notifications You must be signed in to change notification settings

joheri1/legacy-lock

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

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

Our final project in the Web Dev Bootcamp – by Gitte, Kelly, and me

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

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