← 프로젝트 목록

대표 프로젝트

Conoti (코노티) — AI 공지 자동화 앱 · MCP 연동

운영자↔AI 채팅으로 맞춤 공지를 자동 작성 · 예약 발송하고 외부 AI까지 MCP로 연동하는 공지 자동화 앱 — 앱 · 백엔드 · AI · 인프라 1인 모노레포

2026 – 현재 · 기획 · 앱 · 백엔드 · AI · 인프라 단독 (Flutter · FastAPI · MCP · PostgreSQL)
  • Flutter
  • Dart
  • Riverpod
  • FastAPI
  • PostgreSQL
  • MCP
  • OpenAI
  • APScheduler
  • FCM
  • RevenueCat
  • Docker

개요

Conoti(코노티)는 강사 · 학원 · 동호회 같은 모임 운영자를 위한 AI 공지 자동화 앱입니다. 참여자는 수신 전용(인앱 채팅 없음)이고, 운영자는 AI와 대화하는 것만으로 맞춤 공지를 만들어 예약 · 반복 발송할 수 있습니다.

Flutter 앱, FastAPI 백엔드, 커스텀 MCP 서버, 배포 산출물까지 하나의 모노레포로 기획(Phase 0 스펙)부터 구현 · 통합 · 배포까지 1인으로 완성한 v1.0.0 프로젝트입니다.

핵심은 AI 공지 자동화 파이프라인과 MCP 이중 경로 설계로, 내부 앱 AI뿐 아니라 ChatGPT · Claude 같은 외부 AI도 권한 제한 하에 같은 도구를 호출할 수 있게 했습니다.

아키텍처 · 데이터 흐름

  1. 대화 — 운영자가 AI와 멀티턴 대화로 공지 내용을 다듬음 (구조화 출력으로 제목 · 본문 · 일정 · 반복규칙 생성)
  2. 확인 — "등록" 시 서버가 단일 사용 · 페이로드 해시된 확인 토큰을 발급해 오발송을 방지
  3. 등록 — 앱이 MCP 도구(예약/반복 공지 생성)를 호출, MCP가 토큰 · 권한을 재검증 후 공지 생성
  4. 스케줄 — APScheduler가 예약 · 반복 공지를 폴링해 발송 시점을 판단 (타임존 인식)
  5. 발송 — FCM로 참여자에게 푸시, 3중 방어(flock · 상태 CAS · 멱등키)로 중복 발송 차단
  6. 연동 — 상위 플랜은 외부 AI(ChatGPT · Claude)가 발급 인증키로 같은 도구를 호출, 호출 이력을 감사

모바일 앱 (Flutter)

48화면, 순수 Riverpod(코드젠 미사용) · go_router. 우드톤 공지 게시판 UI에 OAuth 로그인 · 푸시 · 구독 결제를 통합.

API 서버 (FastAPI)

11개 기능 모듈 · 99 라우트, SQLAlchemy 2.0 + PostgreSQL(30+ 테이블). pytest 140개 통과, SQLite↔PostgreSQL 호환.

AI 대화 · 공지 생성

구조화 출력(JSON 스키마)으로 공지 초안을 생성하고, 확인 토큰 게이트를 거쳐 등록. 요청 · 토큰 · 비용을 분리 기록.

커스텀 MCP 서버

내부(서비스 토큰) · 외부(발급 인증키) 이중 경로. 공지 초안 · 예약 · 반복 · 발송 도구를 방 · 도구 단위 범위 제한과 감사 로그로 노출.

스케줄러 (APScheduler)

인프로세스 단일 인스턴스(파일락), 예약 · 반복 공지를 타임존 인식으로 발송. Redis 없이 가볍게 운영.

구독 · 결제 (RevenueCat)

4티어(Free/Basic/AI Pro/Professional) 플랜을 서버측 엔타이틀먼트로 게이팅, 애플 · 구글 영수증 검증.

AI 활용

AI 공지 자동 등록

운영자↔AI 멀티턴 대화로 공지를 다듬고, 구조화 출력으로 제목 · 본문 · 일정 · 반복규칙을 받아 확인 게이트 후 자동 등록.

MCP 이중 경로 설계

내부 앱 AI는 서비스 토큰으로, 외부 AI(ChatGPT · Claude)는 발급 인증키로 같은 도구를 호출. 방 · 도구 단위 범위 제한 · 회전 · 폐기 · 감사.

확인 토큰 안전장치

실제 등록 직전 단일 사용 · 시간 제한 · 페이로드 해시된 확인 토큰을 발급해 AI 오작동 · 오발송을 구조적으로 차단.

구조화 출력 + 프롬프트 캐싱

JSON 스키마 강제 출력으로 파싱을 안정화하고, 시스템 프롬프트 캐싱으로 입력 토큰 비용을 절감.

비용 관측 · 공정 사용

사용자 노출 예산/게이지 없이, 호출별 토큰 · 비용을 기록하고 레이트리밋 · 일 · 월 소프트캡으로 공정 사용을 관리.

캘린더 연동 (선택)

상위 플랜은 개인 일정 리마인더를 외부 캘린더와 연동(선택)하고, 강사 개인 맞춤 공지 모듈을 제공.

서비스 자동화 · 운영

예약 · 반복 공지

APScheduler가 규칙 기반(일 · 주 · 월) 반복과 고정 시각 예약을 타임존 인식으로 처리, 템플릿 제목 · 본문 지원.

중복 발송 3중 방어

flock(단일 인스턴스) + 상태 CAS(원자적 전이) + 멱등키(UNIQUE)로 동일 공지의 중복 푸시를 구조적으로 차단.

푸시 발송 (FCM)

Firebase Cloud Messaging로 참여자에게 배치 발송, 디바이스 토큰 등록 · 플랫폼 추적과 재시도 처리.

엔타이틀먼트 게이팅

구독 상태를 항상 서버측에서 재확인하고 플랜별 기능을 미들웨어로 게이팅 (JWT 클레임은 UX 힌트로만 사용).

데이터 보존 정리

무료 1개월 · 유료 1년 보존정책에 따라 만료 · 소프트삭제 레코드를 백그라운드로 정리.

배포 산출물

도커 컴포즈 · 리버스프록시 · systemd · 백업 스크립트를 산출물로 정리, 공유 호스트→전용 VM 분리를 한 번의 덤프/복구로 수행하도록 설계.

기술 스택

모바일

  • Flutter
  • Dart
  • Riverpod
  • go_router
  • dio
  • FCM

백엔드

  • FastAPI
  • SQLAlchemy 2.0
  • PostgreSQL(psycopg3)
  • APScheduler
  • Gunicorn

AI / MCP

  • OpenAI
  • MCP 서버
  • 구조화 출력
  • 프롬프트 캐싱
  • 확인 토큰

인증 · 결제

  • OAuth(구글 · 애플 · 카카오)
  • RevenueCat
  • JWT · 세션

인프라 · 운영

  • Docker Compose
  • Caddy
  • systemd
  • pg_dump 백업

핵심 역할 · 성과

  • 기획(Phase 0 스펙) · 앱 · 백엔드 · AI · 인프라까지 모노레포 전체를 1인으로 설계 · 구현 · 통합
  • 운영자↔AI 채팅 → 구조화 출력 → 확인 토큰 → MCP 등록으로 이어지는 안전한 AI 공지 자동화 파이프라인 구현
  • 커스텀 MCP 이중 경로로 외부 AI(ChatGPT · Claude)까지 권한 · 감사 제어 하에 도구 연동
  • pytest 140 통과 · flutter analyze 0 이슈로 품질을 확보하고 v1.0.0 통합 릴리스까지 완료
← 프로젝트 목록