
이번에 Ambassador Program 2기에 지원하기 위해 위 프로젝트를 기획 후 제작해 보았습니다.
문제 정의
저는 평소에 노션 캘린더와 구글 캘린더를 함께 사용하고 있습니다. 둘 다 훌륭한 도구이지만, 매번 일정을 등록할 때마다 느끼는 작은 귀찮음이 있었습니다.
일정 하나를 등록하려면 시작 시간을 시·분 단위로 직접 지정해야 하고, 일정 이름도 직접 작성해야 합니다. 물론 무슨 일정인지 파악하려면 이름을 적는 과정이 필요한 건 맞습니다.
하지만 한눈에 알아볼 수 있으면서도 짧고 깔끔하게 제목을 쓰려면 어떻게 표현해야 할지 가끔 애매할 때가 있습니다. "팀 미팅"이라고 쓸지, "팀 주간회의"라고 쓸지, 아니면 "주간 싱크"라고 쓸지. 별거 아닌 것 같지만 그 순간에 은근히 고민이 되곤 합니다.
이런 작은 불편함들이 쌓이면 결국 일정 등록 자체를 미루게 됩니다. 머릿속으로는 "내일 3시에 미팅 있다"를 이미 알고 있는데, 그걸 캘린더에 옮기는 과정이 번거로워서 "나중에 넣어야지" 하다가 잊어버리는 거죠.
일정 확인도 마찬가지입니다. "이번 주에 뭐 있었지?" 하고 떠올릴 때, 캘린더를 직접 열어서 날짜별로 눈으로 하나하나 확인해야 합니다. 마치 누군가에게 "이번 주 일정 좀 알려줘"라고 물어보듯 편하게 확인할 수 있으면 좋겠다는 생각이 자주 들었습니다.
정리하면 이렇습니다.
첫째, 날짜 선택부터 시/분 설정, 제목 작성, 카테고리 분류까지 일정 등록 과정 자체가 번거롭습니다. 머릿속에서는 한 줄짜리 메모인데 캘린더에서는 여러 단계를 거쳐야 하죠.
둘째, 일정 제목을 한 눈에 보이면서도 짧게 쓰려면 어떻게 해야 할지 고민되는 순간이 있습니다.
셋째, 일정 확인을 위해 매번 캘린더를 직접 스크롤해서 찾아봐야 한다는 점입니다.
해결 방안
이 문제를 해결하기 위해 Upstage Solar Pro 2를 활용한 AI Agent를 만들었습니다. 일정을 메모하듯 자연어로 짧게 쓰면 AI Agent가 알아서 분석하고 등록해 주는 것입니다.
복잡한 입력 폼을 없앴습니다. 그냥 평소에 메모장에 적듯이 아래처럼 자연어로 입력하면 됩니다.
"내일 오후 3시 팀 미팅"
"금요일까지 보고서 제출"
"다음 주 월요일 아침 9시 운동"
이 텍스트를 Upstage Solar Pro 2에 전달하면, AI가 자동으로 날짜, 시간, 제목, 카테고리를 추출합니다. 예를 들어 "내일 오후 3시 팀 미팅"이라고 입력하면 날짜는 2026-02-02, 시간은 15:00, 제목은 "팀 미팅", 카테고리는 "업무"로 자동 분류됩니다.
시간을 시/분 단위로 직접 선택할 필요도 없고, 일정 제목을 어떻게 쓸지 고민할 필요도 없습니다. 그냥 떠오르는 대로 쓰면 Solar Pro 2가 알아서 구조화해 줍니다.
일정 확인도 캘린더를 직접 뒤질 필요 없이, 사람과 대화하듯 채팅으로 물어볼 수 있습니다. "오늘 일정 뭐야?"라고 물으면 오늘 예정된 일정 목록을 알려주고, "이번 주 중요한 거 알려줘"라고 하면 이번 주 전체 일정을 요약해 줍니다. "완료 안된 거 몇 개야?"처럼 구체적인 질문도 가능합니다.
검색 범위도 유연합니다. "오늘", "내일", "이번 주", "다음 달" 등 다양한 범위로 자연스럽게 질문하면 됩니다. 캘린더를 스크롤하면서 찾던 시간이 대화한 줄로 줄어듭니다.
앱을 처음 실행하면 수면 시간을 설정할 수 있습니다. 예를 들어 밤 11시부터 아침 7시까지로 설정하면, 이 시간대와 겹치는 일정을 등록할 때 경고 표시가 나타납니다. 건강한 생활 패턴을 자연스럽게 유지할 수 있도록 도와주는 기능입니다.
추가로, 키보드 단축키 Cmd+K(Mac) 또는 Ctrl+K(Windows)를 누르면 검색 모달이 열립니다. 일정 제목을 기준으로 빠르게 검색할 수 있어서, 과거에 등록한 일정도 순식간에 찾을 수 있습니다.
기대효과
일정 입력 속도가 대폭 향상됩니다. 기존에는 날짜 선택, 시·분 설정, 종료 시간, 제목 작성, 카테고리까지 30초 이상이 걸리던 과정이 "내일 3시 회의"라는 한 줄 입력으로 10초 이내에 끝납니다.
서버 비용이 들지 않습니다. SQLite 로컬 DB와 Upstage에서 가입 시 제공하는 무료 크레딧을 활용하기 때문에 별도의 인프라 비용 없이 사용할 수 있습니다. 개인 프로젝트나 소규모 팀에서 부담 없이 도입할 수 있습니다.
확장 가능성도 열려 있습니다. 현재 프로토타입을 기반으로 Google Calendar나 Notion Calendar 연동, 푸시 알림을 통한 일정 리마인더, 팀 공유 기능을 통한 협업 도구로의 발전, 반복 일정 패턴 학습 및 자동 제안 등 다양한 방향으로 확장할 수 있습니다.
핵심 기술
Upstage Solar Pro 2
이 프로젝트의 핵심 기술은 Upstage Solar Pro 2 입니다. 이 프로젝트의 두뇌라고 할 수 있으며, 크게 두 가지 방식으로 활용하고 있습니다.
첫 번째는 자연어 파싱입니다. 사용자가 메모하듯 입력한 텍스트를 Solar Pro 2에 전달하면, JSON 형태로 구조화된 일정 데이터를 돌려줍니다. 프롬프트 엔지니어링을 통해 날짜, 시간, 제목, 카테고리를 정확히 추출하도록 설계했고, "다음 주 금요일"이나 "모레"처럼 한국어의 상대적인 날짜 표현도 잘 처리합니다.
두 번째는 채팅 어시스턴트입니다. Solar Pro 2의 Chat Completion 기능을 활용해서, 시스템 프롬프트에 현재 일정 데이터를 함께 넘깁니다. 이렇게 하면 AI가 사용자의 일정 상황을 이해한 상태에서 자연스럽게 대화할 수 있게 됩니다.
Next.js 16 (App Router)
React 기반의 풀스택 프레임워크입니다. API Route를 통해 Solar API 호출이나 DB 접근 같은 백엔드 로직을 같은 프로젝트 안에서 처리할 수 있어서 개발 효율이 높았습니다.
SQLite (better-sqlite3)
일정 데이터를 저장하는 로컬 데이터베이스입니다. 별도의 DB 서버가 필요 없어 설치가 간편하고, data/solar-scheduler.db라는 파일 하나로 관리됩니다. 백업도 이 파일을 복사하면 끝입니다.
React 19 + Tailwind CSS 4 + TypeScript 5
프론트엔드는 최신 React 19로 구성했고, Tailwind CSS 4로 빠르게 스타일링했습니다. TypeScript를 사용해서 타입 안전성도 확보했습니다.
전체 기술 스택을 정리하면, AI 엔진으로 Upstage Solar Pro 2를 사용하고, 풀스택 프레임워크로 Next.js 16(App Router), 프론트엔드에 React 19과 Tailwind CSS 4, 언어는 TypeScript 5, 데이터베이스는 SQLite를 사용하고 있습니다.
실행 방법
이 프로젝트는 https://github.com/taejinn/solar-scheduler 에 MIT 라이선스로 공개되어 있습니다. README.md(페이지 접속 후 하단)을 보시면 빠르고 쉽게 프로젝트를 실행하실 수 있도록 작성하였습니다.
감사합니다.
'개발' 카테고리의 다른 글
| [JetBrains] Toolbox로 IDE설치 후 오류 발생 시 해결방법 (8) | 2024.01.20 |
|---|---|
| 깃허브(Github) 학생 인증하기 (15) | 2023.07.28 |