First, fork this repo and 'git clone' in your local stroage. And then,
$ npm(yarn) install
$ npm(yarn) expo start || npm(yarn) expo start -c (delete cache)
- 팀 명 : Serengeti
- 프로젝트 명 : Serendipity (Eat, Pray, Love)
- 프로젝트 형태 : 수강생 프로젝트
- 팀원 : 안상욱(팀장), 이재협, 엄준식, 노시관, 김상훈
- 배포 링크 :
회사 출퇴근 하면서 '저 사람 되게 괜찮아 보인다. 한 번 만나보고 싶다'는 생각을 가지고 있었는데 직장인들을 위한 만남 주선 어플을 만들어보면 어떨까 하는 생각으로 만든 프로젝트입니다.
- Intro / - Signup1 / - Signup2 / - Signup3
- Signup4 / - Signup5 / - Login / - Card Pick
- Chat! / - 112 / - My Profile & Edit / - Logout& withdrawal
- Role : Team Leader
- Position : Front-end
- Stack : React-Native(Expo) / Apollo / MobX / React-Hooks
- Works : SignUp5 / Chat! / 112 / Logout&Withdraw
- camera/gallery module : get permission for camera+gallery access from user, take photos by camera module, select picture from gallery
- real time chatting + real time chat room list add - useSubscription
- Logout : Token remove + navigate to login page + server request - useMutation
- 112 : report view + server request - useMutation
- CSS : layout + styling for some pages
- Tech-Presentation Topic : Apollo 사용기
-
Role : Team Member
-
Position : Back-end
-
Stack : Server: GraphQL, ORM: Prisma, Auth: Passport-jwt+Crypto, DB: PostgreSQL, Server+DB Deploy: Heroku, APK: Expo, Image Storage: multer + s3, Text: twilio, Email: nodemailer
-
Works : getUser, getMe, signUp, logOut, confirmText, checkForBannedEmail, submitReport, getHuntList, nicknameCheck, deleteAccount, deploy
- getUser: client sends a user's id with which the server searches the database and returns its user data
- getMe: client sends the logged-in user's id with which the server searches the database and returns its user data
- signUp: the client sends sign-up data with which the server creates an account into the database. Using multer, the user's profile image is stored in AWS S3
- logOut: client sends the logged-in user's id with which the server returns a jwt token with 0 second lifespan.
- confirmText: client sends a phone number with which the server uses Twilio to send a confirmation text message containing the verification code.
- checkForBannedEmail: client sends an email with which the server checks if the email is considered "public." Banned emails are listed in a separate file and exported to the resolver function.
- submitReport: client sends the target id with which the server creates a report about the reportee in the database. To prevent the re-match of these two users, the server also places the reportee in a "disliked" category of the reporter. Once included in this category, a future match is impossible.
- getHuntList: client sends the logged-in user's data with which the server finds a list of matches from the database. The list is filtered by:
- The geo-location distance between the two users (both need to be within 5km of each other). This is done by calculations with their lat/long coordinates.
- At least one of their selected "interest" tags must match.
- Must be opposite biological genders.
- Must not be already disliked by the other person.
- nicknameCheck: client sends the user's selected nickname with which the server checks the database to see if is already chosen. Returns a boolean value.
- deleteAccount: client sends the logged-in user's id with which the server deletes the user from the database.
- deploy: Deployed server+PostgreSQL using Heroku and created the client's APK using Expo.
-
Tech-Presentation Topic : Error Handling While Creating APK Through Expo
-
Role : Team Member
-
Position : Back-end
-
Stack : prisma , graphql -yoga , passport_JWT , heroku, multer
-
Works : RealTimeRoom , realTimeMessage , Auth, sendMessage , likeUnlike , edit , confirm ,deploy,datamodel ,createServer
- HuntList) 해당유저에게 필터링 조건에 해당하는 유저 추천
- Like_unlike) like을 누를 시 상대와 나 Mylikes, likedBy connec unlike을 누를 시 상대와 나 MyUnlikes, unlikedBy connect
- Create Room) 서로가 like이 될시 그 동시에 room생성
- RealTimeChat) Subscription 으로 실시간으로 chat을 주고 받음
- Auth) 회원가입시 passport_JWT를 이용하여 Token 을 발행
- delete) 해당 유저에 정보 값 삭제
- Graphql 문법으로 prisma DataModel 구축
- Heroku와 Prisma 연결하여 deploy 진행
- Graphql-yoga와 Prisma를 이용한 서버 구축, 백엔드 basic_structure 구축
-
Tech-Presentation Topic : graphql로 개발을 진행할 때 문제점을 graphql+prisma로 해결.
- Role : Team Member
- Position : Front-end
- Stack : React-Native / Apollo-Client / MobX / React-Hooks
- Works :
- 태그 선택시 선택된 태그 정보를 MobX를 통해 Store에 저장
- 서버에 저장되어있는 정보를 Apollo와 MobX를 통해 Store에 저장
- 서버에 저장되어있는 정보를 Apollo, React-Hooks 를 통해 수정
- Store에 저장되어 있는 정보를 View로 출력
- Tech-Presentation Topic : 개인정보수정 페이지에서 발생한 서버문제 / 해결방법 / 아쉬운 점
- Role : Team Member
- Position : Front-end
- Stack : React-Native / Apollo-Client / MobX / React-Hooks
- Works : SignIn, SignUp, MainPage, UI/UX, CSS
- Component design and navigation implementation
- SignUp - Basic Infromation & Used a map API to set marks on the map and get lat/lon coordinates
- SignIn - Implement login using JWT token and AsyncStorage
- Main - CardPage : Like or dislike request via swipe (using Apollo-GraphQL)
- Create a chat room and implement chat using a subscription
- App Styling (CSS)
- Tech-Presentation Topic : react-hooks와 apollo-react-hooks의 만남
Please add content for *** below.
{
...
{
...
"android": {
"package": "***",
"config": {
"googleMaps": {
"apiKey": "***"
}
}
}
},
"displayName": "serendipity_client",
"name": "serendipity_client"
}
Serendipity is a private domain work for Codestates colleagues. If you are in Codestates, feel free to do whatever you want with it!