Skip to content

Latest commit

 

History

History
189 lines (177 loc) · 6.71 KB

note.md

File metadata and controls

189 lines (177 loc) · 6.71 KB

기능 목록

  • Wiki 조회
    • markdown rendering
    • 이미지
    • Video
  • Wiki 수정
    • 미리보기
    • 이미지 업로드
  • Wiki 검색
  • Plugin
  • 권한 시스템
    • 아무나 읽되, 쓰는 사람은 일부
    • login
    • 다른 ID 로 login
    • 가입
    • 가입시 Role 지정(config)
    • RBAC

기타 고려사항

  • cookie free
  • Server rendering
    • API call을 줄일수 있다.
    • JS 를 상대적으로 적게 써도 동작을 보장할수 있다.
  • Web 표준
  • https service
    • 실질적으로 설정 해야할 이유가 떨어짐
    • 대부분은 ingress(nginx) 뒤에 있게 됨
    • https를 설정할 경우 대부분은 Domain 설정등이 필요해서 추가 설정을 해야 하므로 굳이 간단한 실행을 제공해야 할 이유가 떨어진다.

Feature list

  • '/' 로 접근 하면 front-page 로 redirect
  • 확장자가 없는 path 로 접근 하면, ".md" suffix 가 붙은 Path 로 redirect
  • 최초 실행시
    • Guest 는 wiki를 볼수 있음
  • Editor에서 변경 후 Save 시 변경 내용이 저장 된다.

설계 결정 사항

  • files 관련

    • 어떤 경로에 접근시 ext(확장자)가 없다면 .md 로 redirect 한다.
    • 만약 ?files 가 있다면 redirect 하지 않는다.
    • file upload 는 ?files Page에서 가능하다.
      • Upload 할 file 과 file 이름을 지정할수 있다.
    • files page 에서 edit를 누르면 .md가 붙은 markdown editor 창으로 이동한다.
    • markdown edit 창에서 file upload 는 허용하지 않는다.
    • markdown edit 창에서 files 로 이동할수 있는 button 을 제공한다.
      • 이동시에는 확장자는 제거하고, base 로 이동한다.
    • image 등의 editor 창에서는 replace upload 를 제공한다.
      • 현재 file 을 대체해서 upload 할수 있다.
  • edit 는 replace 방식의 upload 만 제공 한다.

    • file 의 mime type 에 따라 제공 되지 않을수 있다.
  • files 는 파일 이름을 지정해서 upload 할수 있다

    • 같은 이름이 있으면 overwrite
    • 없을경우 upload 하는 file의 이름이 기본이 된다.
  • edit는 반드시 mime type 이 지정 되는경우에만 보여준다.

  • files는 반드시 mime type 이 지정 되지 않는 경우에만 보여준다.

  • edit에서 mine type을 알수 없으면 dir 로 취급, mine type 을 알수 있으면 file 로 취급

    • editor 에서 files 로 가는 링크는 그저 extention 을 땐 editor 로 갈뿐 실질적으로 별개의 page/route 를 가져야되는것이 아님 (wikinote 에서는 별개의 query)

TODO

  • UI 구조개선
    • CustomElement(not React)
    • muti page application
      • non-client routing
  • 파일 업로드
  • image viewer
  • image uploader
  • file upload with drag and drop
  • Edit 에서 tab key 수정
  • image viewer max width
  • video viewer
  • Profile
  • Unauthroized page
  • Register Page
  • Forbidden page...
  • git plugin
  • html templates 의 not found Error handling
  • change embed
  • TLS cache
  • Accept 에 따라서 API 와 아닌것 구분 하기
  • js map(ECMA script)
  • error handling with c.Error()
  • 최초 실행시 data dir 이 없으면 생성
  • Admin 비밀번호는 표준 입력등으로 노출 되지 않도록
    • Setup 용 Token 등을 사용 하는 방안도 고려 해볼수 있음.
    • 최초 실행후 initialize 마법사가 필요..
  • Admin 용 IAM Page(RBAC)
    • User
      • Create
      • Get
      • List
      • Update
      • Delete
    • Group
      • Create
      • Get
      • List
      • Update
      • Delete
    • Role
      • Create
      • Get
      • List
      • Update
      • Delete
    • Assign
      • Create
      • Get
      • List
      • Update
      • Delete
  • 대부분 config 는 file 대신 db에 저장.
    • UI 에서 수정을 지원
    • yaml로 encoding 을 할수는 있음
  • User의 Group이 바뀌면 Logout 후 Login 해야 적용됨
    • user의 Group 정보가 Session(secure cookie)에 들어가기 때문임
    • user의 정보를 직접 넣는 대신 필요할떄 마다 DB 에서 가져다 쓰는 구조로 바뀌어야 할수 있음.
  • 가입 가능 여부를 설정 할수 있으면 좋겠다.
  • i18n
    • 우선은 Page 만 적용
    • Error message 등에는 적용하지 않음.
  • nginx 뒤에 있는 server 의 경우에는 initialize link 가 제대로 표시 되지 않음.
    • nginx 에 proxy_set_header Host $host;를 설정 하면 됨
  • Access log 를 Info level 로 찍기
  • DB 의 Log 를 Debug Level 로 찍기
  • Editor
    • Tab Key가 동작 하도록 만들기
      • indent 조정
    • 저장단축키 적용
    • Undo
      • 1s 정도의 간격으로 text의 변경사항을 추적하고, 100 개 정도의 변경사항을 기록하면 되지 않을까?
    • Redo
    • Resize on input
    • editor 에서 다음줄로 넘어갈때 이전 line 의 indent 만큼은 자동으로 들어가 있도록 설정
  • 적절한 font 설정
  • h1~ h3 까지 horizontal line 적용하기
  • search 기능 고치기
  • move 기능
    • 옯겨갈 Path에 file 이 없으면
    • 파일을 해당 path 에 복사하고
    • 현재 위치에는 해당 Path 로 Link를 남김
  • delete 기능
  • files 고치기
  • move 시 하위 Path 도 같이 이동
    • 정책적으로 할것인지 말것인지를 결정 해야 함.
  • Offline 지원을 위해서, lit-html 을 bundle에 넣기
  • Files, Upload 와 Directory 정책 정리하기
    • .md 에서 files 를 누르면 현재는 Dir로 이동함
    • editor 는 .md 에서 뜨고 그외에는 upload 가 뜸
    • 즉, dir 이 아닌 경로에서 upload 하는것과 dir 인 경로에서 upload 하는것으로 사용성이 나뉘게 됨.
    • Editor 는 Filetype 에 따라서 표시
      • Directory 인 경우
        • 디렉토리에 파일 업로드
      • .md 등 Text 파일일경우
        • Editor 를 표시
        • Drag & Drop 하면 업로드?
      • 그 외인 경우
        • Editor 로 편집이 불가함을 안내하고 대체 파일을 Upload 할수 있음.
  • Checklist render 가 가능하도록 변경 해야 함.
  • [BUG] 없는 Page 를 Editor 로 새로 만들려 할떄 NotFound 가 호출됨
  • form을 enhanced 로 처리 할수 있을지 확인
    • method에 DELETE, PUT 등을 처리
    • 응답 받아서 적절한 처리가 가능할지 확인
      • 우선은 GET 으로 redirect 해서 처리
  • systemd 로 등록할수 있는 예시 service config file
  • Loading 시 Logo 깜빡임 줄이기
  • image viewer 개선
    • not found 표시
    • 기본적인 정보 표시(like size, ...)
  • cache 정책 수립
  • Plugin 개선
    • on/off by web UI