Skip to content

osamhack2022/APP_Meerkat_IQDan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

미어캣 - 빠르고 안전한 군용 채팅앱

GitHub contributors GitHub stars GitHub forks GitHub forks GitHub license

개발 위키 | 발표 자료 | 시연 영상 | apk 다운로드


🔭 프로젝트 소개 (Why Meerkat?)

수많은 장병들이 편의를 위해 카카오톡과 같은 서드파티 메신저앱들을 암암리에 사용하고 있습니다. 훈련 중에는 사용하지 않아도, 훈련 이후 사후 평가나 평시 명령 하달보고 시 자주 사용되고 있습니다. 이런 앱들의 문제점은 군 내부의 정보들이 이러한 민간 서버들에 암호화조차 되지 않고 남을 때가 많다는 것입니다. 만약 암호화 되지 않은 정보가 적에게 유출될 시 매우 큰 약점으로 작용할 수 있습니다.

미어캣은 현재 장병들이 사용중인 채팅앱들의 보안 대책을 마련함과 동시에 군에 특화된 채팅 기능들을 제공합니다.

🕶️ 미어캣으로 더욱 안전한 채팅이 가능합니다.
    :heavy_check_mark: :link:종단간 암호화는 기기 밖에 있는 모든 메시지를 암호화합니다. #
    :heavy_check_mark: :anchor:2차 비밀번호는 휴대폰에 저장되어있는 메시지 또한 암호화합니다. #
    :heavy_check_mark: 서버와 채팅방 멤버들의 :angel:메시지 자동 삭제 주기를 정할 수 있습니다. #

🐎 미어캣으로 유례없는 신속한 의사소통이 가능합니다.
    :heavy_check_mark: 반복되는 보고 양식을 저장할 수 있는 ⚡충성템플릿 #
    :heavy_check_mark: 상급자의 메시지를 요약해주는 🌟명령 요약 #
    :heavy_check_mark: 소대 인원들의 보고를 빛처럼 빠르게 받아볼 수 있는 :kick_scooter:이상무 보고 #
    :heavy_check_mark: 전우들의 근황을 살필 수 있는 군인 특화 :crossed_swords:전우 목록 #


미어캣은 보안에 기민하며 무리를 위해 항시 경계합니다.

팀 지능단은 미어캣의 습성을 보고 영감을 얻었습니다. 빠르게 움직이면서도 항상 경계심을 늦추지 않는 속성이 우리 군이 함양해야할 정신이라고 믿습니다. 오로지 군인을 위한, 군인에 의한, 군인의 채팅앱 미어캣은 강력한 보안과 신속한 군용 메시징 기능들로 무장하였습니다. 앞으로의 미어캣은 군용 WEB3를 구현하여 전시에도 사용가능할 것이며 Scaling 가능한 Centralized 솔루션 또한 만들어나갈 것입니다.


🏹 기능설명 (Features)

🔒 1. 보안 기능

🔗 종단간 암호화 (End-to-end Encryption)
종단간 암호화를 통해 서버에 남기는 기록들을 암호화합니다.
서버에서도 암호화 된 내용을 알 수 없고 오로지 채팅하는 유저들끼리만 내용을 알 수 있습니다.
자세한 내용은 Wiki에서 확인할 수 있습니다.
2차 비밀번호
채팅 기록이 개인 휴대폰에 평문으로 남게되면 누군가 휴대폰을 훔쳐 내용을 보거나 스파이웨어에 의해 정보가 유출될 수 있습니다. 미어캣의 2차 비밀번호 기능을 사용하면 휴대폰에 저장되는 채팅방 내용도 암호화하여 안전하게 채팅 기록을 저장할 수 있습니다.
👼메세지 유통기한
군의 메시지들은 유출되면 안되기에 최대한 빠르게 메시지를 삭제하도록 채팅방마다 자동 삭제 시간을 설정할 수 있습니다. 서버에서는 무조건적으로 설정 시간 뒤에 삭제되며, 채팅방에 속한 모든 기기의 메시지 또한 지구상에서 삭제 옵션으로 유통기한을 정할 수 있습니다.

💬 2. 군용 채팅 기능

충성템플릿
여러가지 격식을 갖추거나 명령 하달 관련 템플릿을 작성/사용/공유할 수 있습니다.
🌟 명령요약
군에서 채팅을 할 때에 가장 중요한 것은 상급자의 명령입니다. 활성화 시 최상급자의 메시지만 보여집니다.
🛴 이상무 보고
분대장, 소대장, 중대장 등이 각종 보고를 빠르게 받아볼 수 있는 기능입니다.
⚔️ 전우 목록
전우들의 전역일, 근황 등을 살펴볼 수 있습니다.

자세한 기능 및 UI는 UI WIki에서, 구현 방식은 로직 Wiki에서 확인하실 수 있습니다.


🤎 Meerkat Brand Identity


🌌 컴퓨터 구성 / 필수 조건 안내 (Prerequisites)

📲 Mobile

Expo Android iOS
SDK 46+ Android 5.0+ iOS 12.4+

🔨 DevTools

Docker Nginx MariaDB
20.0+ 1.22+ 10.6+

🍱 기술 스택 (Technology Used)

Frontend

  • React Native - React.js를 사용한 Cross-Platform 앱 프레임워크
  • Expo - React Native 개발/배포를 쉽게 도와주는 플랫폼

Backend

  • Node.js - 비동기 서버용 JavaScript 런타임
  • Express.js - Node.js용 웹 애플리케이션 프레임워크
  • Socket.io - WebSocket을 통한 실시간 통신 라이브러리
  • MariaDB - MySQL에 기반을 둔 관계형 데이터베이스 관리 시스템
  • Prisma - Node.js와 Typescript를 위한 ORM (Object Relational Mapping)

Design & Collaboration

  • Figma - 인터페이스 디자인을 위한 웹 기반 협업 툴
  • Zoom - 화상 회의
  • Github - Git협업 오픈소스 플랫폼
  • Google slides - 협업 가능한 웹 기반 프레젠테이션 제작 툴

DevOps

  • Github codespace - 웹 브라우저에서 돌아가는 클라우드 기반 개발 플랫폼
  • Pm2 - Node.js 프로세스 매니저
  • Nginx - 가벼움과 높은 성능을 목표로하는 웹 서버
  • Letsencrypt - 무료로 TLS 인증서를 발급해주는 비영리 기관
  • Docker - 응용 프로그램들을 프로세스 격리 기술을 사용해 컨테이너 단위로 실행하고 관리

🌮 프로젝트 사용법 (Getting Started)

Clone

먼저 프로젝트를 clone해줍니다.

# 프로젝트 clone
git clone https://github.com/osamhack2022/APP_Meerkat_IQDan.git

Backend

Docker, SSL, MariaDB 설정 후 아래 커맨드들로 실행할 수 있습니다. 자세한 사항은 Backend 위키 문서를 참고해주세요.

npm i
npm run prisma:migrate:dev       # schema.prisma 변경 사항 반영
npm run dev                      # node로 dev 환경 실행
npm run deploy:dev               # pm2로 dev 환경 실행

Frontend

npm install 이후 Expo Go앱으로 실행할 수 있습니다. 자세한 사항은 Frontend 위키 문서를 참고해주세요

npm i
npx expo start --tunnel          # dev용 expo go 실행
eas build --profile preview      # apk 빌드

👐 기여 방법

개발을 시작하기 전에 Meerkat 개발 규칙을 꼭 읽어 주세요.

  1. https://github.com/osamhack2022/APP_Meerkat_IQDan/fork에서 해당 레포지토리를 fork합니다
  2. Frontend 실행 방법, Backend 환경 구성을 참고해 개발 환경을 설정합니다.
  3. Meerkat Git 규칙을 참고해 git checkout -b [Github ID]/[feature] 명령어로 새 브랜치를 만듭니다.
  4. git stash - git fetch origin - git rebase -i origin 이후에 git add, git commit으로 커밋합니다.
  5. git push origin [Github ID]/[feature] 명령어로 브랜치에 푸시합니다.
  6. pull request를 보내주세요.

👶 팀 정보 (Team Information)

이름 역할 Github Contact
팀장 이세호 PM, 풀스택 개발
정혜일 풀스택 개발
전형록 프론트엔드 개발
임동진 백엔드 개발 및 UI 디자인

🥝 저작권 및 사용권 정보 (Copyleft / End User License)

This project is licensed under the terms of the MIT license.