Git Product home page Git Product logo

2016-real-nextstep's Introduction

개요

본 프로젝트는 NEXT INSTITUTE의 ‘웹 실전 프로젝트’ 수업에서 진행한 '강의 관리 시스템’ 웹 서비스입니다.
이 서비스를 위해 기존에 강의를 하며 사용하게 되는 여러가지 서비스들의 장점을 모으고, 보기 좋은 디자인으로 접근하기 위해 노력하였습니다. 이 서비스가 추구하는 목표는 학생들이 학습하고 배우는 과정을 체계적으로 아카이빙하는 것입니다. 그 이유는 모든 학생들은 각자 학습속도가 다르므로, 학생들 개개인의 NEXT STEP은 달라질 수 밖에 없습니다. 따라서 그 모든 STEP들을 아카이빙하여 모든 학생들이 자신의 NEXT STEP으로 나아가기 위해 발판을 마련하고자 합니다. 그 체계적인 아카이빙 과정은 이 웹서비스와 교수님들이 함께 해주실 것입니다.    

스펙  

  • frontend
    • React.js
    • Redux
  • backend
    • Spring boot
    • Spring Security
    • Spring REST
  • database
    • MySQL

frontend와 backend는 완전히 분리되어 개발되었으며, 각각의 소스코드는 브랜치를 통해 업데이트 됩니다.
두 영역은 각자 서버에서 배포되며, CORS를 통해 통신합니다.

브랜드  

이 서비스의 이름인 NEXT STEP은 개발을 학습하는 모든 학생들의 NEXT STEP을 마련해준다는 목표를 가지고 있습니다. 그래서 브랜드 이미지는 교육적인 브랜드의 성격과 NEXT STEP이라는 단계를 표현하기 위해 책을 계단 모양으로 쌓아놓은 방식으로 표현되었습니다.

디자인  

화면에 대한 와이어프레임과 스토리보드에  대한 디자인 작업은 외주나라를 디자이너를 컨택했고, 작업을 진행하였습니다. 디자이너와는 총 3번의 미팅을 진행하였으며, 페이스북 그룹을 만들어 작업 중간중간에 작은 단위로 피드백을 주고받기 위해 노력하였습니다. 그 결과 약 3주간의 기간에 걸쳐 디자인 소스들을 완성하였습니다. 디자이너가 작업해준 작업 목록은 아래와 같습니다.

  • 로고
    • 4가지 형태의 로고
    • 로고 가이드라인
  • 레이아웃
    • 16장의 화면디자인  
    • 레이아웃 그리드 가이드라인
    • 기본 CSS

디자인 소스는 design-resources 브랜치를 통해 확인할 수 있습니다.

2016-real-nextstep's People

Contributors

junnie-jobs avatar byeol avatar javajigi avatar

Stargazers

Sar(g)u avatar

Watchers

 avatar James Cloos avatar Daybrush (Younkue Choi) avatar  avatar Kyoungchin Seo avatar 박재성 avatar 김정 avatar  avatar 전용우 avatar Dongwoo Oh avatar SeoEunhee avatar

2016-real-nextstep's Issues

핵심적인 모델 설계 및 구현

핵심적인 모델 설계 및 구현

  • 핵심적인 모델 (Professor, Lecture, Class, Goal/Objective)을 설계 및 구현한다.
  • 각각의 모델은 Trello의 구조 (Team, Board, List, Card)와 일치한다.

서버-사이드 개발 환경 설정

서버-사이드 개발 환경 설정

  • Spring Boot, Spring Data JPA를 이용해 개발 환경을 설정한다.
  • Build Tool로는 Gradle을 사용한다.

파일 업로드 기능 구현

파일 업로드 기능 구현

  • 파일 업로드 기능을 구현한다.
  • 각각의 학습 목표는 강의 자료(파일)을 n개 가질 수 있다.

API 호출을 위한 커스텀 미들웨어 적용

API 호출을 위한 커스텀 미들웨어 적용

설명

  • 미들웨어는 액션을 보내는 순간부터 스토어에 도착하는 순간까지 사이에 서드파티 확장을 사용할 수 있는 지점을 제공합니다. 여러분은 미들웨어를 로깅이나, 충돌 보고나, 비동기 API와의 통신이나, 라우팅이나 기타 등등에 사용할 수 있습니다. (미들웨어에서 발췌)
  • redux-actions는 Redux를 위한 Flux Standard Action 유틸리티입니다.
  • redux-api-middleware는 API 호출을 위한 Redux middleware입니다.

제안

  • Real World 예제에 적용된 바와 같이, API 호출을 위한 커스텀 미들웨어를 적용합니다. 커스텀 미들웨어를 이용해 API를 호출하고 응답을 정제하는 코드를 다른 로직으로부터 분리할 수 있습니다.

참고

React-Bootstrap 사용

React-Bootstrap 사용

제안

React-Bootstrap은 React.js에서 Bootstrap API를 보다 쉽게 사용할 수 있도록 만들어진 front-end framework입니다. 자세한 내용은 문서를 참고하실 수 있습니다.

추가 요구사항 정리

  • 강의 리소스 자체를 관리하는 공간과 온/오프라인 강의를 위한 별도의 공간이 필요하다.

    • 강의 시작일과 강의 종료일이 있다.
    • 강의 자료는 강의 리소스를 기반
    • 3, 4개의 Lecture가 기본이고, 추가로 1,2개의 Lecture를 추가할 수 있는 구조여야겠다.
  • 현재 Trello UI와 똑같은 구조로 강의 자료를 관리할 수 있어야 한다.

    • 강의 자료에 대한 관리는 교수만 가능하다.
  • 교수는 앞에서 만든 강의 자료를 기반으로 강의를 개설할 수 있다.

    • 강의 자료는 같은데 2016년 1학기 강의, 2017년 1학기 강의와 같은 구조여야 한다.
    • 모든 강의는 Base가 되는 강의 자료에서 파생되어야 한다.

위 내용과 관련해 이해되지 않을 수 있는데 이번 주 미팅에서 공유할게.

package manager를 이용한 dependencies 관리

Package manager를 이용한 dependencies 관리

제안

현재 다양한 라이브러리를 GitHub repository를 이용해 관리하고 있습니다. npm 또는 Bower와 같은 package manager를 이용하면, repository에서 불필요한 파일 (버전 관리가 필요하지 않은 파일)을 제거할 수 있을 것으로 예상됩니다.

Async 함수 적용

Async 함수 적용

설명

Async 함수는 asyncawait을 이용하여 비동기 코드를 매우 쉽게 작성할 수 있도록 도와줍니다. Async 함수는 현재 ECMAScript spec process의 Stage 4 (Finished) 상태로, ECMA-262 표준에 포함될 예정입니다.

제안

Async 함수를 이용하면, 기존의 코드에 존재하는 Callback이나 Promise를 효과적으로 대체할 수 있습니다. asyncawait의 사용은 React의 build 과정에서 Babel에 의해 compile 되므로, 기존의 modern browser에서 사용할 수 있습니다. Promise와 Async 함수의 비교는 링크에서 보실 수 있습니다.

참고

react-scripts dependency 업데이트

react-scripts 업데이트

설명

react-scriptsCreate React App을 구성하는 development dependency입니다.

제안

현재 react-scripts에 대한 버전이 ^0.6.0으로 설정되어 있습니다. react-scripts의 버전을 0.7.0으로 업데이트합니다. 업데이트는 다음 명령으로 실행 가능합니다.

npm install --save-dev --save-exact [email protected]

참고

No dependency로 실시간 댓글 구현

백엔드에서 웹소켓을 활용한 실시간 댓글을 구현하려고 합니다.
간단한 프론트를 목업으로 만들고, 서버쪽 로직을 구현합니다.

  • 간단한 프론트 페이지
  • 서버로직

핵심 모델(LCID) REST API 구현

핵심 모델(LCID) REST API 구현

  • Auditing/Permission 제외

진행 상황

  • Lectures (CRUD)
  • Courses (CRUD)
  • Issues (CRUD)
  • IssueComments (CRUD)
  • Discussions (CRUD)
  • DiscussionReplies (CRUD)

EditorConfig 적용

EditorConfig 적용

설명

EditorConfig는 코딩 스타일을 정의하는 파일입니다. EditorConfig를 설정하고 IDE에 해당하는 플러그인을 추가함을 통해, 코딩 스타일 차이에서 발생하는 불필요하고 성가신 conflict (e.g., indentation styles)을 방지할 수 있습니다. EditorConfig는 최근의 많은 프로젝트에서 활용되고 있습니다.

제안

EditorConfig 설정을 통해, 모든 파일에 대해 다음과 같은 코딩 스타일 사용을 제안합니다.

  • Unix-style newlines with a newline ending every file
  • 2 space indentation
  • remove any whitespace characters preceding newline characters

이와 같은 코딩 스타일은 AngularReact 같은 다양한 웹 프로젝트에서 사용되고 있습니다.

2번째 마일스톤

  • SWAP 기능 course, issue 추가
  • Professor 권한으로 학생들 ISSUE 상황을 Progress로 나타내기
  • Professor 권한으로 해당 강의 수강생들 목록 보여주기
  • action 함수 정리 및 API URL 연결

테스트 후 기능 개선 및 버그

강의 생성과 진행

  • Course/Session를 개설한다.
    • 개설하는 시점에 시작 시간과 종료 시간을 설정할 수 있어야 한다.
    • 강의 목록에는 현재 강의 중인 목록만 나타난다.

Session 페이지

  • 각 Session별 Lecture의 경우 "Add a Lecture"가 나타나지 않도록 한다.
  • Session내에서 새로운 Session을 생성할 수 있어야 한다.
  • Lecture가 많아질 경우 좌/우 스크롤 되어야 한다.

Lession 상세 페이지

  • 파일 첨부가 되어야 한다.
  • 특정 상황에서 Q&A가 로딩되지 않고 상태바만 나타난다.
  • 1depth 질문의 경우 답변 수를 볼 수 있어야 한다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.