받아보는 메일링 리스트를 통해 알게된 재미있는 Framework가 있어서 한 번 다뤄보려 한다.

https://oneoneone.kr/content/d9b579e3

 

나온지 꽤 된 것임에도 잘 몰랐는데,

'노마드 코더'의 극찬 영상으로 인해 호기심을 확 끌었다.

https://www.youtube.com/watch?v=DlyoFFOcPCg

 

 

이 framework의 분류를 정확히 뭐라해야할지 애매한데, 구글링을 통해 확인한 여러 별칭은 다음과 같다.

  - CMS

  - App Framework

  - App Backend

  - Backend Framework

  - Admin Panel

  - Library

 

음... 아직 명확한 naming은 안되어있는 분류인 것이다.

하지만, 뭘 말하고자 하는 것인지는 왠지 알 수 있을 것만 같은 느낌적인 느낌!?

 

 

일단, 이번에 다뤄보고자 하는 것은 "Keystone JS"라는 아이이다.

https://keystonejs.com/

 

재빨리 설치하고 웹을 띄워보자!!!

 

 

[ Environment ]

일단 개발 환경은 다음과 같다.

- 운영 체제: Ubuntu 20.04 LTS

 

❯ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.6 LTS
Release: 20.04
Codename: focal

 

 

[ Node ]

이 아이도 Node.JS 기반이고 npm을 이용하기 때문에 node부터 설치를 해야 한다.

 

버전 호환성으로 인한 어려움이 종종 발생하기 때문에

우리는 node의 다양한 버전을 다룰 수 있는 방법이 필요하다!

 

그래서, 나의 선택은 nvm !!!

아래 링크를 통해 nvm, node, npm 설치를 하자 !!!

- https://www.whatwant.com/entry/npm

 

❯ git clone https://github.com/nvm-sh/nvm.git ~/.nvm
'/home/chani22/.nvm'에 복제합니다...
remote: Enumerating objects: 9051, done.
remote: Counting objects: 100% (1830/1830), done.
remote: Compressing objects: 100% (111/111), done.
remote: Total 9051 (delta 1764), reused 1730 (delta 1719), pack-reused 7221
오브젝트를 받는 중: 100% (9051/9051), 3.28 MiB | 10.09 MiB/s, 완료.
델타를 알아내는 중: 100% (5790/5790), 완료.


❯ cd ~/.nvm


❯ git tag


❯ git switch -c v0.39.3 tags/v0.39.3
새로 만든 'v0.39.3' 브랜치로 전환합니다
 3.8.16  chani22@chani22-VBox  ~/.nvm   v0.39.3


❯ nano ~/.zshrc

 

...
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

 

- shell 재접속 후

 

❯ nvm --version
0.39.3


❯ nvm install node
Downloading and installing node v20.4.0...
Downloading https://nodejs.org/dist/v20.4.0/node-v20.4.0-linux-x64.tar.xz...
######################################################################################################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v20.4.0 (npm v9.7.2)
Creating default alias: default -> node (-> v20.4.0)


❯ node --version  
v20.4.0


❯ npm --version 
9.7.2

 

 

[ Keystone JS ]

npm을 이용해서 keystone-app을 생성할 수 있다.

나의 app 이름을 지어주면 기본적인 boilerplate를 생성해준다.

 

❯ mkdir keystone


❯ cd keystone


❯ npm init keystone-app@latest
Need to install the following packages:
  create-keystone-app@9.0.1
Ok to proceed? (y) 

✨ You're about to generate a project using Keystone 6 packages.

✔ What directory should create-keystone-app generate your app into? · my-app

⠋ Installing dependencies with yarn. This may take a few minutes.
⚠ Failed to install with yarn.
✔ Installed dependencies with npm.


🎉  Keystone created a starter project in: my-app

  To launch your app, run:

  - cd my-app
  - npm run dev

  Next steps:

  - Read my-app/README.md for additional getting started details.
  - Edit my-app/keystone.ts to customize your app.
  - Open the Admin UI
  - Open the Graphql API
  - Read the docs
  - Star Keystone on GitHub


❯ cd my-app/


❯ ls -al
합계 484
drwxrwxr-x   4 chani22 chani22   4096  7월 12 16:28 .
drwxrwxr-x   3 chani22 chani22   4096  7월 12 16:26 ..
-rw-rw-r--   1 chani22 chani22     46  7월 12 16:26 .gitignore
drwxr-xr-x   2 chani22 chani22   4096  7월 12 16:28 .keystone
-rw-rw-r--   1 chani22 chani22   2874  7월 12 16:26 README.md
-rw-rw-r--   1 chani22 chani22   2710  7월 12 16:26 auth.ts
-rw-rw-r--   1 chani22 chani22   1014  7월 12 16:26 keystone.ts
drwxrwxr-x 570 chani22 chani22  20480  7월 12 16:28 node_modules
-rw-rw-r--   1 chani22 chani22 410056  7월 12 16:28 package-lock.json
-rw-rw-r--   1 chani22 chani22    397  7월 12 16:26 package.json
-rw-rw-r--   1 chani22 chani22   9506  7월 12 16:26 schema.graphql
-rw-rw-r--   1 chani22 chani22   1056  7월 12 16:26 schema.prisma
-rw-rw-r--   1 chani22 chani22   5178  7월 12 16:26 schema.ts
-rw-rw-r--   1 chani22 chani22    195  7월 12 16:26 tsconfig.json
 3.8.16  chani22@chani22-VBox  /srv/workspace/ks/my-app


❯ nano keystone.ts


❯ npm run dev

> keystone-app@1.0.2 dev
> keystone dev

✨ Starting Keystone
⭐️ Server listening on :3000 (http://localhost:3000/)
⭐️ GraphQL API available at /api/graphql
✨ Generating GraphQL and Prisma schemas
✨ sqlite database "keystone.db" created at file:./keystone.db
✨ Your database is now in sync with your schema
✨ Connecting to the database
✨ Creating server
✅ GraphQL API ready
✨ Generating Admin UI code
✨ Preparing Admin UI app
- warn You have enabled experimental feature (appDir) in next.config.js.
- warn Experimental features are not covered by semver, and may cause unexpected or broken application behavior. Use at your own risk.

- event compiled client and server successfully in 195 ms (18 modules)
✅ Admin UI ready
- wait compiling /_error (client and server)...
- event compiled client and server successfully in 6.5s (1706 modules)

 

'npm run dev'를 하면 웹앱을 띄워준다.

크롬으로 접속하면 된다.

http://localhost:3000/

 

첫 사용자를 생성해야 한다.

귀찮지만 8자 이상의 패스워드를 넣어줘야 한다.

Create user

 

예쁜 화면을 볼 수 있다.

Dashboard

 

User List를 확인해보면 다음과 같은 화면을 볼 수 있다.

Users

 

상세 정보도 확인할 수 있다.

User detail

 

Posts 화면을 살펴보자.

Posts

 

Create Post 버튼을 누르면 멋진 화면이 나온다.

Create Post

 

입력 인터페이스가 정말 산뜻하다. (직접 구현하려면 엄청 귀찮았을....)

Edit

 

 

[ GraphQL ]

API를 확인하기 위해서는 주소가 다르다.

 

http://localhost:3000/api/graphql

 

멋지지 않은가?!

 

 

하지만, 주의 사항은 있다.

관련된 공부를 하지 않고서는 이 편리함을 누릴 수 없다.

 

귀차니즘의 해결이지, No Study & Easy Use는 아니다 !!!

 

 

반응형

'Programming > Web' 카테고리의 다른 글

npm, node 그리고 nvm  (0) 2023.01.04

 

GitHub Pages 기능을 이용한 개인 포트폴리오 웹서비스를 해보려고

이것 저것 알아보던 중 몇 가지 템플릿을 찾았는데

 

사용법에 등장한 'npm'

 

"응?! npm을 설치해야겠구만!"

 

 

'npm'의 약자는 'Node Package Manager'이다.

 

즉, node.js 기반으로 미리 잘 만들어진 패키지들을 사용하고 싶을 때

의존성 있는 패키지들을 설치하려면 npm을 이용하면 된다.

 

 

다른 프로그래밍 언어들도 각자 나름의 패키지 매니저가 있다.

Language Package Manager
Ruby Gem
PHP Composer
C# NuGet
Java Jpm
Python pip

 

다시 npm 이야기로 돌아와서

node와 npm이 짝궁이라면 node만 설치해도 npm이 같이 설치가 된다는 말인데,

node를 설치하려고 봤더니 정말 다양한 버전의 node가 있다.

 

 

상황에 따라 여러 버전의 node를 사용하게 된다는 것인데,

하나의 시스템에서 여러 버전의 node를 사용하려면 귀차니즘이 발동할 수 있다는...

 

 

그래서, 여기저기 기웃거리다가 찾게된 'nvm'

 

'nvm'의 약자는 'Node Version Manager'이다.

 

 

 

nvm 저장소 주소는 다음과 같다.

  - https://github.com/nvm-sh/nvm

 

nvm

 

 

'nvm' 설치 방법은 다양하게 제공되고 있고

일반적으로는 'curl' 명령어를 이용해서 install script를 실행하는 방식을 가이드하고 있다.

 

하지만, 여기에서는 개인적인 취향으로

깔끔하게 git clone 받아서 직접 설치하는 방법으로 결정했다.

  - https://github.com/nvm-sh/nvm#git-install

 

 

이하 과정은 Ubuntu 20.04 LTS 환경에서 진행했다.

 

❯ git clone https://github.com/nvm-sh/nvm.git ~/.nvm

❯ cd ~/.nvm

git switch -c v0.39.3 tags/v0.39.3

 

개인적으로 zsh을 사용하고 있으므로 이를 기준으로 해서 후속 작업 진행했지만,

bash를 사용하는 경우에도 동일한 과정이다.

 

❯ nano ~/.zshrc

 

...
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

 

위의 내용을 추가해주고, 터미널 재시작하면 'nvm' 명령어를 먹는다.

 

❯ nvm --version
0.39.3

 

nvm에서 설치 가능한 node version 목록을 확인하고 싶다면 다음 명령어를 사용하면 된다.

 

❯ nvm ls-remote

 

최신 버전의 node를 설치하려면 다음 명령어를 통해 가능하다.

 

❯ nvm install node
Downloading and installing node v19.3.0...
Downloading https://nodejs.org/dist/v19.3.0/node-v19.3.0-linux-x64.tar.xz...
####################################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v19.3.0 (npm v9.2.0)
Creating default alias: default -> node (-> v19.3.0)

❯ node --version
v19.3.0

 

특정 버전의 node는 다음과 같이 설치할 수 있다.

 

❯ nvm install 14.7.0
Downloading and installing node v14.7.0...
Downloading https://nodejs.org/dist/v14.7.0/node-v14.7.0-linux-x64.tar.xz...
####################################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v14.7.0 (npm v6.14.7)

❯ node --version
v14.7.0

 

앞에서 설치한 버전으로 변경하고자 한다면 다음과 같이 할 수 있다.

 

❯ nvm use node 19.3.0
Now using node v19.3.0 (npm v9.2.0)

❯ node --version
v19.3.0

 

어디에 설치되어 있는지(실행 파일의 위치를) 확인하고 싶다면 다음과 같이 하면 된다.

 

nvm which 19.3.0
/home/chani22/.nvm/versions/node/v19.3.0/bin/node

 

어?! 여기서 잠깐 !!!

우리가 지금 여기까지 진행한 이유는 npm 설치를 하려던 것이다. npm을 확인해보자.

 

❯ node --version
v19.3.0

❯ npm --version
9.2.0

❯ nvm use node 14.7.0
Now using node v14.7.0 (npm v6.14.7)

❯ node --version
v14.7.0

❯ npm --version
6.14.7

 

중간에 node 버전을 변경해봤더니, npm도 버전이 바뀌었다는 것을 볼 수 있었다.

 

 

여기까지 해서 마무리~!!!

반응형

'Programming > Web' 카테고리의 다른 글

백엔드 프레임워크 - KeystoneJS  (1) 2023.07.13

+ Recent posts