{"id":26235692,"url":"https://github.com/antkaynak/painterino-v2","last_synced_at":"2025-04-22T17:05:09.017Z","repository":{"id":119848646,"uuid":"138343183","full_name":"antkaynak/Painterino-v2","owner":"antkaynak","description":"A multiuser sketching game where one user draws a word and other players in the room try to guess what it is!","archived":false,"fork":false,"pushed_at":"2018-07-25T10:49:58.000Z","size":329,"stargazers_count":9,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-29T17:03:54.308Z","etag":null,"topics":["angular","angular6","angularmaterial","canvas","canvas-game","express","expressjs","game","mean-stack","meanstack","mongodb","multiplayer","online","online-game","paint","painting","socket","socket-io","websocket"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/antkaynak.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}},"created_at":"2018-06-22T19:58:04.000Z","updated_at":"2024-07-08T12:46:46.000Z","dependencies_parsed_at":"2023-06-03T09:00:51.767Z","dependency_job_id":null,"html_url":"https://github.com/antkaynak/Painterino-v2","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antkaynak%2FPainterino-v2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antkaynak%2FPainterino-v2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antkaynak%2FPainterino-v2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antkaynak%2FPainterino-v2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antkaynak","download_url":"https://codeload.github.com/antkaynak/Painterino-v2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250285662,"owners_count":21405296,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","angular6","angularmaterial","canvas","canvas-game","express","expressjs","game","mean-stack","meanstack","mongodb","multiplayer","online","online-game","paint","painting","socket","socket-io","websocket"],"created_at":"2025-03-13T03:17:24.359Z","updated_at":"2025-04-22T17:05:08.994Z","avatar_url":"https://github.com/antkaynak.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Painterino Version 2\n\nA multiuser sketching game where one user draws a word and other players in the room try to guess what it is!\n\n## Some Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/antkaynak/Painterino-v2/blob/master/screenshots/pic1.png\" width=\"350\"\u003e\n  \u003cimg src=\"https://github.com/antkaynak/Painterino-v2/blob/master/screenshots/pic2.png\" width=\"350\"\u003e\n  \u003cimg src=\"https://github.com/antkaynak/Painterino-v2/blob/master/screenshots/pic3.png\" width=\"350\"\u003e\n  \u003cimg src=\"https://github.com/antkaynak/Painterino-v2/blob/master/screenshots/pic4.png\" width=\"350\"\u003e\n\u003c/p\u003e\n\n\n## How to Play\n* You have to sign up to play.\n* You can create rooms containing minimum 2 and maximum 10 people.\n* One player draws a random word shown on the screen and the others try to guess what it is!\n* Round does not complete until all player have guessed or the time is up.\n* After 10 rounds a score board is shown and the game is over!\n\n\n### Disclaimer\nThis project is made for learning purposes.\n\n\n### Prerequisites\n\nWhat things you need to install\n\nThe backend (api) and the frontend (frontend) are splitted and must be installed accordingly.\n\n```\nNodeJS v10.4.0\nAngular CLI 6.0.8 is recommended\nMongoDB 3.6.6 NoSQL database server.\nCompatible IDE, Visual Studio Code is recommended for this project.\n\n```\n\n### Installing\n\n\n```\nYou have to create a config.json file with this format\n{\n  \"dev\": {\n    \"PORT\": 3000,\n    \"MONGODB_URI\": \"mongodb://yourdatabaseurl\",\n    \"JWT_SECRET\": \"yourjwtsecret\"\n  },\n  \"production\": {\n    \"PORT\": 3000,\n    \"MONGODB_URI\": \"mongodb://yourdatabaseurl\",\n    \"JWT_SECRET\": \"yourjwtsecret\"\n  },\n  \"test\": {\n    \"PORT\": 3000,\n    \"MONGODB_URI\": \"mongodb://yourdatabaseurl\",\n    \"JWT_SECRET\": \"yourjwtsecret\"\n  }\n}\n\nNote: If your server provider wants to use its own port, you should remove the port field in your config.json file.\n\n```\n\n\n### Database \nThis application uses NoSQL database MongoDB and a Schema library mongoose.\nMongoose script is below.\n\n```\nconst Schema = mongoose.Schema;\nconst userSchema = new Schema({\n    email: {\n        type: String,\n        required: true,\n        minlength: 1,\n        trim: true,\n        unique: true,\n        validate: {\n            validator: (value) =\u003e {\n                const re = /^[a-zA-Z0-9_!#$%\u0026’*+/=?`{|}~^.-]+@[a-zA-Z0-9.-]+$/;\n                return (value == null || value.trim().length \u003c 1) || re.test(value);\n            },\n            message: '{VALUE} is not a valid email'\n        }\n    },\n    username: {\n        type: String,\n        required: true,\n        minlength: 1,\n        trim: true,\n        unique: true\n    },\n    password: {\n        type: String,\n        required: true,\n        minlength: 6,\n    },\n    tokens: [{\n        access: {\n            type: String,\n            required: true\n        },\n        token: {\n            type: String,\n            required: true\n        }\n    }]\n});\n\nconst Schema = mongoose.Schema;\nconst wordSchema = new Schema({\n    key: {\n        type: String,\n        required: true,\n        minlength: 1,\n        trim: true,\n        unique: true,\n    }\n});\n\n```\n\nFor more details please visit the model folder in the api section.\n\n\n## Built With\n\n* [MongoDB](https://www.mongodb.com/) - MongoDB 6.3.3\n* [ExpressJS](https://expressjs.com/) - ExpressJS 4.16.3\n* [Angular 6](https://angular.io/) - Angular 6\n* [NodeJS](https://nodejs.org/en/) - NodeJS 10.4.0\n* [SocketIO](https://socket.io/) - SocketIO 2.1.1\n* [Angular Material](https://material.angular.io/) - Angular Material 6.4.1\n* [RxJS](https://rxjs-dev.firebaseapp.com/) - RxJS 6\n* [Mongoose Random](https://github.com/larryprice/mongoose-simple-random) - Mongoose Simple Random 0.4.1\n* [Moment](https://momentjs.com/) - MomentJS 2.22.2\n* [Ngx Color Picker](https://www.npmjs.com/package/ngx-color-picker) - Ngx Color Picker 6.4.0\n* [Lodash](https://lodash.com/) - Lodash 4.17.10\n\nFor more information please visit api/package.json and frontend/package.json files.\n\n\n## Known Bugs\n* When the last drawing player disconnects while drawing the turn do not switch. \n* The chat window does not scroll properly when a new message arrives.\n* If you lose the connection with the server in the middle of the game it bugs out and you have to refresh.\n* Some UI bugs in mobile.\n\n## Contributing\n\nIf you want to contribute to this project you can e-mail me - antkaynak1@gmail.com\nor you can pull request.\n\n## Versioning\n\nThis project uses git as its version control system.\n\n\n## Authors \n\n* **Ant Kaynak** - *Initial work* - [Github](https://github.com/antkaynak)\n\n\n## License\n\nThis project is licensed under the  Apache License - see the [LICENSE.md](https://github.com/antkaynak/Painterino-v2/blob/master/LICENSE) file for details.\n\n# Questions\nIf you have any questions mail me at  antkaynak1@gmail.com\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantkaynak%2Fpainterino-v2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantkaynak%2Fpainterino-v2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantkaynak%2Fpainterino-v2/lists"}