Covey.town provides a virtual meeting space where different groups of people can have simultaneous video calls, allowing participants to drift between different conversations, just like in real life
High-level architecture of Covey.town
- The frontend client uses the PhaserJS Game Library to create a 2D game interface, using tilemaps and sprites.
- The frontend implements video chat using the Twilio Programmable Video API
- A backend service implements application logic: tracking which "towns" are available to be joined, and the state of each of those towns
CREATE A TOWN
A user has to input a username, town name and select if it is going to be publicly listed in the town join list
OR
JOIN A TOWN
Select a town and if there is space you can connect to that town in the public town list or if you know the townID you can input that a connect directly to that town
IN THE
TOWN
- Town is given a TownID and editing password
- In the Foyer there are tables where a user can create a topic and others can join the discussion
- Users are automatically connected with each other through video and voice chat
- Video and voice chat can be turned on and off as a user desires
- The town also has information on all of the different conversations going on and who is participating in those discussions
Typescript
Javascript
HTML/CSS
Takeaways
This project was a good way to understand and learn the software engineering process. By working on both the frontend and the backend of this application I was able to learn about how each work individually and how they are connected to each other. The seven steps of the software development process were all touched upon with this project from planning, checking requirements, design/prototyping, software development, software testing, implementation/integration, and operation/maintenance. I learned that the software engineering process is a continuous loop meaning that things are constantly being changed and evolving. Software development is a great thing and being able to write consistent and concise code that can be implemented in a variety of situations is what makes programming so incredibly dynamic.