{"id":37223773,"url":"https://github.com/encorelab/ck-board","last_synced_at":"2026-01-15T01:38:16.916Z","repository":{"id":36985395,"uuid":"389228289","full_name":"encorelab/ck-board","owner":"encorelab","description":"The Common Knowledge (CK) Board is the latest rebuild of the ENCORE Lab's collaborative canvas for guiding collective inquiry and active learning activities.","archived":false,"fork":false,"pushed_at":"2025-07-20T18:06:31.000Z","size":21239,"stargazers_count":7,"open_issues_count":110,"forks_count":3,"subscribers_count":5,"default_branch":"develop","last_synced_at":"2025-07-20T20:23:01.623Z","etag":null,"topics":["angular","mongo","nodejs","websockets"],"latest_commit_sha":null,"homepage":"https://score.encorelab.org/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/encorelab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-07-25T00:45:53.000Z","updated_at":"2025-07-17T06:08:39.000Z","dependencies_parsed_at":"2023-02-19T15:01:09.643Z","dependency_job_id":"e176642a-f6f1-492c-a9c9-0b454534752d","html_url":"https://github.com/encorelab/ck-board","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/encorelab/ck-board","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encorelab%2Fck-board","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encorelab%2Fck-board/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encorelab%2Fck-board/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encorelab%2Fck-board/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/encorelab","download_url":"https://codeload.github.com/encorelab/ck-board/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/encorelab%2Fck-board/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28441031,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-15T00:55:22.719Z","status":"ssl_error","status_checked_at":"2026-01-15T00:55:20.945Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","mongo","nodejs","websockets"],"created_at":"2026-01-15T01:38:16.004Z","updated_at":"2026-01-15T01:38:16.886Z","avatar_url":"https://github.com/encorelab.png","language":"TypeScript","readme":"## Description\n\nThis Common Knowledge (CK) Board is the latest rebuild of the ENCORE Lab's collaborative canvas for guiding collective inquiry and active learning activities.\n\n## Setup\n\n### 1. Install Node.js, Angular, and Redis\n\n- Node: https://nodejs.org/\n  - Use the v18\n- Angular: `npm install -g @angular/cli `\n- Redis: https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/\n\n### 2. Clone the repository\n\n```shell\n$ git clone https://github.com/encorelab/ck-board.git\n```\n\n### 3. Install required dependencies\n\nInstall Frontend dependencies:\n\n```shell\n$ cd frontend\n$ npm install\n```\n\nInstall Backend dependencies:\n\n```shell\n$ cd backend\n$ npm install\n```\n\n### 4. Add environment variables\n\nCreate a `.env` file inside the `/backend` directory (`touch .env` in your terminal or manually create file using your IDE)\n\nAdd the following content into the `.env` file and replace with your own credentials:\n\n```\nDB_USER=[MongoDB Username]\nDB_PASSWORD=[MongoDB Password]\nDB_URL=[MongoDB URL]\nDB_NAME=[MongoDB Name]\nJWT_SECRET=[JWT Secret Token]\nPORT=8001\nSTATIC_FILES_PATH=[for dev, use \"./../../frontend/dist/ck-board\"; for production, use \"/site/wwwroot/frontend/dist/ck-board\"]\nCKBOARD_SERVER_ADDRESS=[For dev, use \"http://localhost:4201\"; for production, use server URL, e.g., \"https://ck-board.oise.utoronto.ca\"]\nGOOGLE_APPLICATION_CREDENTIALS=\"./secrets/keyfile.json\"\nGOOGLE_CLOUD_PROJECT=[Google Cloud Project ID]\nSMTP_HOST=smtp.gmail.com\nSMTP_PORT=465\nSMTP_EMAIL=[gmail password]\nSMTP_PASSWORD=[gmail 'app' password (generated at https://myaccount.google.com/apppasswords)]\n```\n\n**1. `GOOGLE_APPLICATION_CREDENTIALS`**\n\n- **Purpose:** This variable specifies the path to your Google Cloud service account key file. This key file allows the application to authenticate with Google Cloud and access Vertex AI services.\n- **How to obtain:**\n    1. **Create a Google Cloud Project:** If you don't have one already, create a new project in the Google Cloud Console.  Remember the **Project ID** (e.g., `ai-data-extractor`).\n    2. **Create a Service Account:** In your Google Cloud project, go to the **IAM \u0026 Admin** \u003e **Service Accounts** page and create a new service account.\n    3. **Create a Key:**  For the service account, create a new key of type **JSON**. This will download a JSON file containing your key file.\n    4. **Store securely:** Store this JSON file in a secure location within your project's **backend** directory (e.g., `./secrets/keyfile.json`).\n- **Example:** `GOOGLE_APPLICATION_CREDENTIALS=\"./secrets/keyfile.json\"`\n\n**2. `GOOGLE_CLOUD_PROJECT`**\n\n- **Purpose:** This variable indicates the ID of your Google Cloud project. \n- **How to obtain:** Use the **Project ID** you noted when creating your Google Cloud project.\n- **Example:** `GOOGLE_CLOUD_PROJECT=ck-ai-assistant`\n\n**SCORE SSO (Optional)**\n\nIf also running [SCORE](https://github.com/WISE-Community/WISE-Docker-Dev) for Single Sign-On (SSO), add the following additional content into the `.env` file and replace with your own credentials:\n\n```\nSCORE_SSO_ENDPOINT=/sso/ckboard\nSCORE_SSO_SECRET= [any value that matches ck_board_sso_secret on SCORE]\nSCORE_LOGOUT_ENDPOINT=/api/logout \n```\n\nFor the SCORE development environment, add the following values to application-dockerdev.properties \n\n```\nck_board_url=http://localhost:4201\nck_board_sso_secret_key=[any value that matches SCORE_SSO_SECRET on CK Board]\n```\n\n### 5. Run Application\n\nStart redis, server first, then start client app once the server has successfully started:\n\n```shell\n$ redis-server   # Start redis server on default port\n\n# … Open a new terminal tab to run backend server\n\n$ cd backend     # Go into backend folder if not already\n$ npm run dev    # Start server\n\n# … Open a new terminal tab to run client app\n\n$ cd frontend    # Go into frontend folder\n$ ng serve --port 4201      # Run Angular app; Will start application on http://localhost:4201/\n```\n\n## Running database migrations\n\nSwitch to the `/backend` directory.\n\n\n\n## Running unit tests\n\nRun `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).\n\n## Running end-to-end tests\n\nRun `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities.\n\n## Contributing\n\n##### 1. Create or choose an issue from the `Issues` tab\n\n##### 2. Branch off develop and add your fix in a new branch titled `issue-{issue-number}`\n\n##### 3. Push your changes\n\n##### 4. Create a pull request with appropriate title and description\n\n##### 5. Add `Closes #{issue-number}` at the bottom of the PR description\n\n##### 6. Create the pull request and await for approval or feedback.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fencorelab%2Fck-board","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fencorelab%2Fck-board","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fencorelab%2Fck-board/lists"}