{"id":19198380,"url":"https://github.com/simonskodt/itu-minitwit","last_synced_at":"2026-06-15T06:03:34.858Z","repository":{"id":65942391,"uuid":"595680430","full_name":"simonskodt/itu-minitwit","owner":"simonskodt","description":"Weekly updates in the course DevOps, Software Evolution and Software Maintenance","archived":false,"fork":false,"pushed_at":"2023-08-30T22:13:24.000Z","size":13457,"stargazers_count":1,"open_issues_count":16,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-04T11:12:09.635Z","etag":null,"topics":["devops","twitter"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simonskodt.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}},"created_at":"2023-01-31T15:38:15.000Z","updated_at":"2023-04-11T14:17:43.000Z","dependencies_parsed_at":"2025-01-04T11:12:08.978Z","dependency_job_id":"3a9ac6bd-7330-4fb7-a1ed-fe1768a7e329","html_url":"https://github.com/simonskodt/itu-minitwit","commit_stats":null,"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonskodt%2Fitu-minitwit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonskodt%2Fitu-minitwit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonskodt%2Fitu-minitwit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonskodt%2Fitu-minitwit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simonskodt","download_url":"https://codeload.github.com/simonskodt/itu-minitwit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240271540,"owners_count":19774859,"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":["devops","twitter"],"created_at":"2024-11-09T12:21:38.915Z","updated_at":"2026-06-15T06:03:29.821Z","avatar_url":"https://github.com/simonskodt.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![GitHub license](https://img.shields.io/github/license/Naereen/StrapDown.js.svg)](https://github.com/simonskodt/itu-minitwit/blob/main/LICENSE)\n![GitHub Release Date](https://img.shields.io/github/release-date/simonskodt/itu-minitwit)\n![GitHub last commit](https://img.shields.io/github/last-commit/simonskodt/itu-minitwit)\n[![.NET](https://img.shields.io/badge/--512BD4?logo=.net\u0026logoColor=ffffff)](https://dotnet.microsoft.com/)\n[![TypeScript](https://img.shields.io/badge/--3178C6?logo=typescript\u0026logoColor=ffffff)](https://www.typescriptlang.org/)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=simonskodt_itu-minitwit\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=simonskodt_itu-minitwit)\n\u003ca href=\"https://codeclimate.com/github/simonskodt/itu-minitwit/maintainability\"\u003e\u003cimg src=\"https://api.codeclimate.com/v1/badges/6988da87fa2308716260/maintainability\" /\u003e\u003c/a\u003e\n[![Snyk Security](https://github.com/simonskodt/itu-minitwit/actions/workflows/snyk-security.yml/badge.svg)](https://github.com/simonskodt/itu-minitwit/actions/workflows/snyk-security.yml)\n[![Build \u0026 Test](https://github.com/simonskodt/itu-minitwit/actions/workflows/build-test.yml/badge.svg)](https://github.com/simonskodt/itu-minitwit/actions/workflows/build-test.yml)\n[![Continuous Deployment](https://github.com/simonskodt/itu-minitwit/actions/workflows/continuous-deployment.yml/badge.svg)](https://github.com/simonskodt/itu-minitwit/actions/workflows/continuous-deployment.yml)\n[![Swarm Deployment](https://github.com/simonskodt/itu-minitwit/actions/workflows/swarm-deployment.yml/badge.svg)](https://github.com/simonskodt/itu-minitwit/actions/workflows/swarm-deployment.yml)\n\n# DevOps\u0026mdash;Twitter Project\n\n| :love_letter: Group k\u0026mdash;Radiator | Link |\n| ------------- | ------------- |\n| Website | [http://164.92.167.188:3000](http://164.92.167.188:3000)  |\n| Swagger  | [http://164.92.167.188/swagger/index.html](http://164.92.167.188/swagger/index.html)  |\n| Monitoring and Logging (requires login) | [http://164.92.167.188:9091](http://164.92.167.188:9091) |\n| Status on projects | [http://104.248.134.203/status.html](http://104.248.134.203/status.html) |\n| Weekly commit activity per group | [http://138.197.185.85/commit_activity_weekly.svg](http://138.197.185.85/commit_activity_weekly.svg) |\n\n## Contents\n\n- [Missing Implementations](#missing-implementations)\n- [Weeks](#weeks)\n  - [Week 1](#week-1)\n  - [Week 2](#week-2)\n  - [Week 3](#week-3)\n  - [Week 4](#week-4)\n  - [Week 5](#week-5)\n  - [Week 6](#week-6)\n  - [Week 7](#week-7)\n  - [Week 8](#week-8)\n  - [Week 9](#week-9)\n  - [Week 10](#week-10)\n  - [Week 11](#week-11)\n  - [Week 12](#week-12)\n  - [Week 13](#week-13)\n- [Course description](#course-description)\n\n## Missing Implementations\n\nWe currently **lack the following features**:\n\n- Deploy to DigitalOcean with Vagrant.\n- Refactor the tests to work with new design.\n- Implement end-to-end tests.\n- Make UML-diagram of system.\n- Add scaling.\n- Use Terraform for IaC.\n\nIt would be **nice to have the following features**:\n\n- Create automatic releases when merging into main branch.\n- Switching from HTTP To HTTPS.\n\n## Weeks\n\n### Week 1\n\nRefactor ITU-MiniTwit to work on modern system.\n\n- [x] 1) Adding Version Control.\n- [x] 2) Try to develop a high-level understanding of ITU-MiniTwit.\n- [x] 3) Migrate ITU-MiniTwit to run on a modern computer running Linux.\n- [x] 4) Share your Work on GitHub.\n\n### Week 2\n\nRefactor ITU-MiniTwit in another programming language and tech stack.\n\n- [x] 1) Refactor ITU-MiniTwit to another language and technology of your choice.\n- [x] 2) Containerize ITU-MiniTwit with Docker.\n- [x] 3) Describe Distributed Workflow, see [CONTRIBUTE.md](https://github.com/simonskodt/itu-minitwit/blob/main/Documents/CONTRIBUTE.md).\n\n### Week 3\n\nContinue refactoring, introduction of DB abstraction layer, and deployment of your ITU-MiniTwit to a remote server.\n\n- [x] 1) Implement an API for the simulator in your ITU-MiniTwit.\n- [x] 2) Continue refactoring of your ITU-MiniTwit.\n\n### Week 4\n\nContinue refactoring, Setup CI \u0026 CD for reproducible builds, tests, delivery, and deployment.\n\n- [x] 1) Complete implementing an API for the simulator in your ITU-MiniTwit.\n- [x] 2) Creating a CI/CD setup for your ITU-MiniTwit.\n- [x] 3) Continue refactoring of your ITU-MiniTwit.\n\n### Week 5\n\nCleaning and polishing of your ITU-MiniTwit, introduction of DB abstraction layer, and entering maintenance (Simulator starts).\n\n- [x] 1) Add missing features.\n- [x] 2) Introduce a DB abstraction layer in your ITU-MiniTwit.\n  \n### Week 6\n\nAdd monitoring to your ITU-MiniTwit and peer-review.\n\n- [x] 1) Add Monitoring to Your Systems.\n- [x] 2) Software Maintenance II: Check the user interface of another group (Group m, *Jason Derulo*), see [Issue#17](https://github.com/NiclasHjortkjaer/itu-minitwit/issues/17).\n  - [x] Do you see a public timeline?\n  - [x] Does the public timeline show messages that the application received from the simulator?\n  - [x] Can you create a new user?\n  - [x] Can you login as a new user?\n  - [x] Can you write a message?\n  - [x] After publishing a message, does it appear on your private timeline?\n  - [x] Can you follow another user?\n\n### Week 7\n\nEnhancing CI/CD setup with test suite and static code analysis.\n\n- [x] 1) Add tests to your CI chain (Selenium)\n- [x] 2) Enhance your CI Pipelines with at least three static analysis tools\n  - [x] eslint (typescript)\n  - [x] codeql (csharp)\n  - [x] Snyk (containers)\n- [x] 3) Add Maintainability and Technical Debt estimation tools to your projects\n  - [x] Sonarqube\n  - [x] Code Climate (hosted from Code Climate, not in GitHub actions)\n- [x] 4) Software Maintenance\n  \n### Week 8\n\nAdd logging to your ITU-MiniTwit.\n\n- [x] 1) Add Logging to Your Systems\n- [x] 2) Test that Your Logging Works\n  - The Devs introduce a bug; the Ops resolve the bug by using the logs.\n\n### Week 9\n\nSecurity Assessment \u0026 Pen Testing.\n\n- [x] 1) Perform a Security Assessment, see [SECURITY_ASSESSMENT.md](https://github.com/simonskodt/itu-minitwit/blob/main/Documents/SECURITY_ASSESSMENT.md)\n  - [x] A. Risk Identification\n  - [x] B. Risk Analysis\n  - [x] C. Pen-Test Your System\n- [x] 2) White Hat Attack The Next Team\n  - Group k Radiator -[checks]-\u003e Group m Jason Derulo, see [Issue#20](https://github.com/NiclasHjortkjaer/itu-minitwit/issues/20).\n\n### Week 10\n\nIsolate components into services/containers/VMs.\n\n- [x] 1) Add Scaling to your projects\n- [x] 2) Rolling Updates\n- [x] 3) Software Maintenance\n\n### Week 11\n\nWorkshop: How to SSL in front of Docker Swarm.\n\n- [ ] 1) Using LetsEncrypt and Nginx as a reverse proxy.\n- [ ] 2) Using Digital Ocean managed load balancers as SSL terminator.\n\n### Week 12\n\nEncode your infrastructure setup.\n\n- [ ] Automating also the creation of infrastructure.\n\n### Week 13\n\n- [x] Write report, see [BSc_group_k.pdf](https://github.com/simonskodt/itu-minitwit/blob/main/Report/build/BSc_group_k.pdf).\n\n## Course description\n\nAs a participant of the DevOps course at the IT University of Copenhagen, we are in for a hands-on learning experience. Every week, we will make changes to a Twitter project to put into practice the concepts and tools that we learn in class. Here is what we will be covering during this course:\n\n- Bash: We will learn the basics of the shell, navigate the file system, and execute commands.\n\n- Packaging applications: We will get hands-on experience with packaging applications for distribution and deployment.\n\n- Containerization: We will learn how to create and manage containers to isolate applications and their dependencies.\n\n- Virtual Machines: We will explore the use of virtual machines for testing, development, and deployment.\n\n- CI/CD: We will understand the concepts of Continuous Integration and Continuous Deployment, and implement them using popular tools such as Jenkins and GitLab.\n\n- Monitoring: We will learn how to monitor the performance of our applications and infrastructure to ensure optimal operation.\n\n- Maintainability: We will gain insight into making our applications maintainable, and understand the importance of clean code and testing.\n\n- Log analysis: We will collect and analyze log data to identify and resolve issues in our applications.\n\n- Web security: We will explore the importance of web security and the measures we can take to protect our applications and users.\n\n- Scalability: We will understand the concept of scalability and learn how to design and implement scalable applications.\n\n- Load balancing: We will balance loads across multiple servers to improve performance and reliability.\n\n- Infrastructure as Code: We will manage and provision infrastructure using code, and understand how this can improve the consistency and reliability of our deployments.\n\nBy the end of this course, we will have developed a solid foundation in DevOps concepts and practices, and will have the skills and confidence to build, deploy, and manage applications at scale.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonskodt%2Fitu-minitwit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonskodt%2Fitu-minitwit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonskodt%2Fitu-minitwit/lists"}