What
작성한 콘텐츠를 날짜·조건에 맞춰 다시 열어보는 타임캡슐형 웹 서비스입니다.
Personal · Time capsule · TypeScript
디지털 타임캡슐 웹 플랫폼
현재의 기록을 미래의 나에게 전달하는 시간 기반 서비스입니다. 로그인 사용자마다 캡슐을 분리하고, 지정한 날짜·스케줄에 맞춰 열리도록 API와 저장 구조를 설계했습니다.
Summary
작성한 콘텐츠를 날짜·조건에 맞춰 다시 열어보는 타임캡슐형 웹 서비스입니다.
기록이 쌓일수록 “언제 다시 볼지”를 시스템이 기억하도록 설계하고 싶었습니다.
Express API + Supabase(PostgreSQL) + 서버 스케줄로 잠금·공개를 나눴습니다.
사용자·캡슐 단위로 데이터를 분리하고, 확장 가능한 API 형태로 정리했습니다.
Stack
Node.js 환경에서 Express로 라우트·미들웨어를 구성하고, TypeScript로 타입 안정성을 맞췄습니다.
캡슐 CRUD·공개 시점 조회 등 역할별 엔드포인트를 나누고, 인증 이후 요청만 허용하도록 설계했습니다.
Supabase(PostgreSQL)에 사용자·캡슐 메타를 저장하고, 서버 재시작 후에도 데이터가 유지되도록 했습니다.
클라우드에 API·정적 자원을 올려 접속 가능한 URL 기준으로 동작하도록 배포 흐름을 잡았습니다.
Flow
클라이언트는 인증된 세션·토큰 기준으로만 캡슐을 생성·수정하고,
서버는 스케줄러(또는 배치)로 공개 시점을 판별해 잠금 해제 로직과 맞춥니다.
Design
작성 시점과 공개 시점을 메타데이터로 두고, 조회 시점에 따라 응답을 필터링해 “아직 열리지 않은 캡슐”을 보호합니다.
로그인 계정(또는 사용자 ID) 단위로 캡슐을 묶어, 타인 데이터와 섞이지 않도록 쿼리·권한 경계를 맞췄습니다.
특정 시각에 공개 상태로 전환되도록 서버 측 스케줄·폴링 등 실행 전제를 두고, 누락 시 재시도 가능한 구조를 지향했습니다.
캡슐 수·첨부·알림 등 기능이 늘어나도 라우트와 서비스 레이어를 나눠 유지보수하기 쉽게 정리했습니다.
Closing
“나중에 읽을 기록”을 서비스 차원에서 지키려면 시간·권한·저장이 한 세트로 설계되어야 합니다.
FutureBox는 그 전제를 코드와 스키마로 표현해 본 개인 프로젝트입니다.