Appwrite 및 NextJS를 사용한 크리켓 득점 앱(계속)
14994 단어 appwritetailwindcssnextjsreact
끝났기 때문에 이 게시물은 의 일부가 아닙니다. main 브랜치에서 볼 수 있고 vercel 호스팅을 통해 미리보기를 사용할 수 있는 최근에 수행한 몇 가지 변경 사항을 공유해야겠다고 생각했습니다. 백엔드 Appwrite 서버가 켜져 있지 않은 경우 웹 앱이 제대로 작동하지 않을 수 있습니다. 설정을 위해 EC2를 사용했고 유휴 상태일 때 종료될 가능성이 있기 때문입니다.
자, 여기 몇 가지 백엔드, DB 구성 등을 보여주는 Appwrite의 몇 가지 스크린샷이 있습니다.
플랫폼 구성이 클라이언트 URL의 요청을 허용하는지 확인하십시오. 제 경우에는 다음과 같습니다.
이 플랫폼 항목에 대한 빠른 도움을 주셔서 감사합니다.
EC2 인스턴스의 탄력적 IP를 가리키는 하위 도메인에 대한 IPv4 A 레코드를 추가하여 사용자 지정 도메인으로 appwrite를 설정했습니다. 네임스페이스 변경 없이 도메인을 구입한 곳에서 DNS 구성을 수행할 수 있습니다. 도메인을 통해 Appwrite를 사용하고 있으므로 Appwrite 측에서 두 가지 추가 작업을 수행해야 합니다. 먼저 env 변수 _APP_DOMAIN_TARGET을 Appwrite를 사용하려는 도메인으로 설정한 다음 사용자 지정 도메인으로 이동해야 합니다. 섹션에 동일한 URL을 추가합니다.
그리고 .env 파일이 제대로 설정되면
docker-compose up
로 Appwrite를 다시 설치/설치할 수 있으므로 먼저 Appwrite 에서 제공한 최근 URL에서 docker-compose.yaml 및 .env를 모두 다운로드해야 합니다. 설치됨docker-compose .$ cat .env | grep -i DOMAIN_TARGET
_APP_DOMAIN_TARGET=<domain-where-appwrite-would-run>
docker compose 파일은 많은 컨테이너를 생성해야 합니다 🔥.
$ docker container ls | grep appwrite | awk '{print $2}' | uniq
appwrite/appwrite:0.13.0
traefik:2.5
appwrite/appwrite:0.13.0
redis:6.0-alpine3.12
mariadb:10.7
appwrite/telegraf:1.2.0
appwrite/influxdb:1.0.0
위에서 본 것처럼 appwrite는 배후에서 mariadb도 사용합니다. 여기에서 0.13을 사용했지만 0.14은 이미 나왔습니다🆕. 하지만 원활한 업그레이드를 수행할 수 있는 방법을 확인하면서 업그레이드를 계획할 것입니다.
그 밖에 DB 필드를 보여주는 Appwrite의 일부 스크린샷입니다.
컬렉션은 다음과 같습니다.
그리고 모든 컬렉션은 문서 수준 권한으로 설정됩니다.
각 컬렉션의 속성과 인덱스는 다음과 같습니다.
플레이어:
"attributes": [
{
"key": "username",
"type": "string",
"status": "available",
"required": true,
"array": false,
"format": "email",
"default": null
},
{
"key": "players",
"type": "string",
"status": "available",
"required": true,
"array": true,
"size": 255,
"default": null
}
]
성냥:
"attributes": [
{
"key": "matchName",
"type": "string",
"status": "available",
"required": true,
"array": false,
"size": 255,
"default": null
},
{
"key": "matchNoOfPlayers",
"type": "integer",
"status": "available",
"required": true,
"array": false,
"min": -9223372036854776000,
"max": 9223372036854776000,
"default": null
},
{
"key": "matchNoOfOvers",
"type": "integer",
"status": "available",
"required": true,
"array": false,
"min": -9223372036854776000,
"max": 9223372036854776000,
"default": null
},
{
"key": "matchPlace",
"type": "string",
"status": "available",
"required": true,
"array": false,
"size": 255,
"default": null
},
{
"key": "matchStatus",
"type": "string",
"status": "available",
"required": true,
"array": false,
"size": 255,
"default": null
},
{
"key": "teamAName",
"type": "string",
"status": "available",
"required": true,
"array": false,
"size": 255,
"default": null
},
{
"key": "teamAPlayers",
"type": "string",
"status": "available",
"required": true,
"array": true,
"size": 255,
"default": null
},
{
"key": "teamBName",
"type": "string",
"status": "available",
"required": true,
"array": false,
"size": 255,
"default": null
},
{
"key": "teamBPlayers",
"type": "string",
"status": "available",
"required": true,
"array": true,
"size": 255,
"default": null
},
{
"key": "tossWinner",
"type": "string",
"status": "available",
"required": true,
"array": false,
"size": 255,
"default": null
},
{
"key": "tossWinnerChoice",
"type": "string",
"status": "available",
"required": true,
"array": false,
"size": 255,
"default": null
},
{
"key": "userID",
"type": "string",
"status": "available",
"required": true,
"array": false,
"size": 255,
"default": null
},
{
"key": "winner",
"type": "string",
"status": "available",
"required": false,
"array": false,
"size": 255,
"default": null
}
]
오버:
"attributes": [
{
"key": "balls",
"type": "integer",
"status": "available",
"required": true,
"array": false,
"min": -9223372036854776000,
"max": 9223372036854776000,
"default": null
},
{
"key": "bowler",
"type": "string",
"status": "available",
"required": true,
"array": false,
"size": 255,
"default": null
},
{
"key": "matchID",
"type": "string",
"status": "available",
"required": true,
"array": false,
"size": 255,
"default": null
},
{
"key": "innings",
"type": "integer",
"status": "available",
"required": true,
"array": false,
"min": -9223372036854776000,
"max": 9223372036854776000,
"default": null
},
{
"key": "over",
"type": "integer",
"status": "available",
"required": true,
"array": false,
"min": -9223372036854776000,
"max": 9223372036854776000,
"default": null
},
{
"key": "runs",
"type": "integer",
"status": "available",
"required": true,
"array": false,
"min": -9223372036854776000,
"max": 9223372036854776000,
"default": null
},
{
"key": "wickets",
"type": "integer",
"status": "available",
"required": true,
"array": false,
"min": -9223372036854776000,
"max": 9223372036854776000,
"default": null
}
],
"indexes": [
{
"key": "matchID",
"type": "key",
"status": "available",
"attributes": [
"matchID"
],
"orders": [
"ASC"
]
}
]
배팅스코어카드:
"attributes": [
{
"key": "balls",
"type": "integer",
"status": "available",
"required": true,
"array": false,
"min": -9223372036854776000,
"max": 9223372036854776000,
"default": null
},
{
"key": "batsman",
"type": "string",
"status": "available",
"required": true,
"array": false,
"size": 255,
"default": null
},
{
"key": "batsmanNo",
"type": "integer",
"status": "available",
"required": true,
"array": false,
"min": -9223372036854776000,
"max": 9223372036854776000,
"default": null
},
{
"key": "innings",
"type": "integer",
"status": "available",
"required": true,
"array": false,
"min": -9223372036854776000,
"max": 9223372036854776000,
"default": null
},
{
"key": "matchID",
"type": "string",
"status": "available",
"required": true,
"array": false,
"size": 255,
"default": null
},
{
"key": "position",
"type": "string",
"status": "available",
"required": true,
"array": false,
"size": 255,
"default": null
},
{
"key": "runs",
"type": "integer",
"status": "available",
"required": true,
"array": false,
"min": -9223372036854776000,
"max": 9223372036854776000,
"default": null
},
{
"key": "out",
"type": "boolean",
"status": "available",
"required": false,
"array": false,
"default": false
}
],
"indexes": [
{
"key": "matchID",
"type": "key",
"status": "available",
"attributes": [
"matchID"
],
"orders": [
"ASC"
]
}
]
데이터베이스는 정확한 min max 값으로 더 잘 조정할 수 있습니다. 즉석에서 생성할 수 있는 firestore 또는 HarperDB 과 달리 속성을 먼저 정의해야 합니다. 하지만 이 접근 방식은 괜찮습니다. 제 생각에는 우리가 더 많은 통제권을 가지고 있고 안전하다고 생각합니다.
알겠습니다. try 을 지정하고 괜찮거나 논리 또는 UI에 대한 개선이 필요한지 알려주십시오. 자유롭게 수정하여 code 개선하십시오.
고맙습니다 !!! 🙂
Reference
이 문제에 관하여(Appwrite 및 NextJS를 사용한 크리켓 득점 앱(계속)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/networkandcode/cricket-scoring-app-with-appwrite-and-nextjscontd-2k64텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)