– what is the secret of Boris the cat’s energy? – he saves time on homework because he uses UniHub Be a cat and you, use UniHub!
Introduction #
Feedback
Write concise and well-written project description here. To enhance it further, we recommend incorporating additional details that provide an overview of your project. Consider including elements such as a project logo, a link to your project’s webpage, or any other relevant visual materials that can help showcase your work effectively.
As we plan to promote your work, it’s crucial to ensure that this file serves as a compelling introduction that captures the attention of a potential reader.
Presentation of the project “UniHub” by team Kringe Production.
Week #1 #
Identify the Problem: The problem that our project addresses is the lack of a centralized platform for university students to seek and offer mutual help. University students often face challenges and inefficiencies when it comes to finding assistance or resources related to their courses. Some of the pain points, bottlenecks, and limitations they encounter include:
Limited access to study materials: Students may struggle to find relevant and up-to-date study materials for their courses, especially when preparing for exams.
Difficulty in connecting with peers: It can be challenging for students to connect with other students who have expertise in specific subjects or can offer assistance.
Inefficient communication channels: Existing communication channels, such as email or telegram groups, may not be tailored to the specific needs of students seeking academic support.
Solution Description: Our project provides a solution to the identified problem by creating a mutual help forum specifically designed for university students. The key features and functionalities of our platform include:
Centralized study materials: We offer a file storage system that allows students to conveniently upload and access study materials, past exams, lecture notes, and other relevant resources. The materials are categorized by courses, making it easy for users to find what they need.
Peer-to-peer interaction: Our platform facilitates connections between students who need help and those who can provide assistance. Students can post questions, seek advice, or request study partners within the forum, encouraging a collaborative learning environment.
Reputation system: To ensure the quality and reliability of assistance, we implement a reputation system where users can rate and provide feedback on each other’s contributions. This helps build trust and identifies knowledgeable and helpful contributors.
Personalized notifications: Users can customize their notification settings to receive updates on topics or courses they are interested in. This feature ensures that students stay informed about relevant discussions and opportunities for assistance.
Benefits to Users: By using our software project, university students can experience several benefits, including:
Enhanced access to study materials: Students can easily find and share study materials, reducing the time and effort spent searching for resources. This enhances their productivity and efficiency in preparing for exams and completing assignments.
Collaborative learning: Our platform promotes knowledge-sharing and collaboration among students. Users can benefit from the expertise of their peers, improving their understanding of course material and enhancing their learning experience.
Time and cost savings: Instead of individually searching for study materials or paying for expensive resources, students can leverage the shared resources on our platform. This reduces the financial burden and saves valuable time that can be allocated to other academic pursuits.
Differentiation:
Our software project stands out from competing solutions due to several unique selling points:
Tailored to university students: Unlike general-purpose forums or study platforms, our solution specifically serves to the needs of university students. The interface, features, and content are designed to address the challenges faced by this specific user group.
Comprehensive study material storage: Our platform focuses on providing a centralized and extensive repository of study materials, ensuring that students can find resources for a wide range of courses. This sets us apart from platforms that only offer limited resources or focus on specific subjects.
Reputation system for quality assurance: The implementation of a reputation system adds an additional layer of credibility and quality assurance to the platform. Users can rely on ratings and feedback to identify reliable sources of assistance, distinguishing our platform from others that lack this feature.
User Impact:
The broader impact of our web project is a more efficient and supportive learning environment for university students. By facilitating connections and knowledge-sharing, our platform empowers students to take control of their education and overcome academic challenges. The adoption of our solution can lead to the following positive changes:
- Improved academic performance: Students can access high-quality study materials and receive assistance from their peers, resulting
User Testimonials or Use Cases:
Use Case 1: Study Material Sharing Users of our forum can easily share study materials related to their courses. For example, a student who has compiled comprehensive notes for a Network course can create a post on the forum and attach the notes as a file. Other students seeking additional resources for the same subject can then access and download those study materials. This feature enables students to collaborate and benefit from a wider range of study materials, supplementing their learning and improving their understanding of the course content.
Use Case 2: Exam Preparation Discussions Forum serves as a platform for students to engage in discussions and preparation for upcoming exams. Users can create discussion threads focused on specific courses or exam topics. For instance, student preparing for a final exam in a Mathematical Analysis course can initiate a discussion thread to seek clarifications, ask questions, and share helpful tips with fellow students. This allows for a collaborative learning environment where users can leverage the collective knowledge and experiences of their peers to enhance their exam preparation and boost their confidence.
Use Case 3: Academic Support and Guidance Students can seek academic support and guidance through our forum. They can post queries or challenges they are facing in their studies, and other users can respond with helpful advice and solutions. For example, a student struggling with a complex programming concept can describe their difficulty on the forum and receive guidance from more experienced peers. This stimulates a supportive community where students can help each other overcome obstacles and succeed in their academic pursuits.
Please answer the following questions related to the lean startup methodology:
What problem or need does your software project address? Our project addresses the need for a centralized platform that enables university students to seek and offer mutual help. It provides a solution to the challenges faced by students in accessing study materials, connecting with peers, and communicating efficiently within their academic community. By addressing these pain points, our project aims to create a supportive and collaborative environment for students.
Who are your target users or customers? Target users are university students from various academic levels. This includes undergraduate and postgraduate students who seek assistance in their courses, want to access study materials, and are interested in collaborating with their peers. Our project is designed to serve to students from different universities and academic backgrounds.
How will you validate and test your assumptions about the project? To validate and test our assumptions about the project, we can employ several strategies:
User research: Conduct surveys, interviews, or focus groups with university students to understand their pain points, needs, and preferences when it comes to seeking academic help and accessing study materials. This research will help validate our assumptions about the challenges faced by students.
Prototyping and user testing: Develop prototypes or minimum viable products (MVPs) of our software project and conduct usability testing with a group of target users. Their feedback and insights will provide valuable validation and help identify any areas that require improvement.
Beta testing: Release a beta version of the software project to a limited number of users and gather feedback on their experience. This allows us to validate assumptions about the platform’s usability, functionality, and effectiveness in addressing the identified problem.
What metrics will you use to measure the success of your project?
To measure the success of our project, we can consider the following metrics:
User engagement: Track the number of active users, frequency of interactions, and the average time spent on the platform. This metric indicates the level of engagement and the value users find in the software project.
Content contribution: Monitor the number of study materials uploaded, questions asked, and answers provided. This metric reflects the level of collaboration and knowledge-sharing happening on the platform.
User satisfaction: Conduct surveys or gather feedback from users to assess their satisfaction with the platform, its features, and the quality of assistance received. This metric helps gauge user perception and overall satisfaction.
Academic performance: If possible, track the academic performance of users who actively engage with the platform compared to those who don’t. This metric can provide insights into the impact of the project on students’ learning outcomes.
How do you plan to iterate and pivot if necessary based on user feedback?
Based on user feedback, we plan to adopt an iterative approach and be responsive to the needs and preferences of our users. Here’s how we plan to iterate and pivot if necessary:
Regular feedback collection: Establish channels for users to provide feedback easily, such as feedback forms or suggestion boxes within the platform. Actively monitor and analyze the feedback received..
Prioritize feature requests: Review user feedback and prioritize feature requests based on the needs and preferences of the majority of users. This ensures that the most important and impactful features are implemented.
Agile development methodology: Adopt an agile development methodology that allows for continuous improvement and flexibility. This approach enables us to quickly iterate, address user feedback, and pivot if necessary based on evolving user needs.
User testing and validation: Before implementing major changes or pivoting the direction of the project, conduct user testing and validation to ensure that the proposed changes align with user expectations and provide value.
Explain how your team plans to leverage the following resources for the development and success of your project:
AI (Artificial Intelligence): We plan to leverage AI in our project by utilizing the capabilities of the language model AI, such as ChatGPT model, to gain valuable advice and insights. We can consult it for guidance on best practices, approaches, and potential solutions to challenges we may encounter during the development process. ChatGPT expertise can help us make informed decisions and optimize our project’s functionality and user experience. In addition our team also plans to utilize GitHub Copilot, an AI model that assists in code writing.
Open-Source: Open-source libraries and frameworks play a role in our project’s development. We can leverage existing open-source solutions to save time and effort in building core functionalities. By utilizing open-source libraries, we can access a wide range of pre-built components and modules that have been tested and contributed to by a larger community. This allows us to focus on customizing and integrating these components into our project rather than reinventing the wheel. Additionally, open-source software encourages collaboration and transparency, providing opportunities for feedback, improvement, and community support.
Experts in relevant domains: Having experts in relevant domains that communicating with our team is invaluable. These experts can provide in-depth knowledge and insights into specific subject areas or technical aspects of our project. They can also offer guidance on industry best practices, help with problem-solving, and ensure the project aligns with academic standards. Their expertise enhances the overall quality and credibility of our project, contributing to its success.
Inviting Other Students We are open to inviting other students to join our project. We believe that fostering collaboration and expanding our team can greatly benefit the development process and overall success of the project. (хз что тут можно такого написать чтобы не налить слишком много воды, итак уже дохера налил)
Defining the Vision for Your Project
Overview: Our project is a mutual help forum and file storage platform designed specifically for Innopolis University students. Its purpose is to address the challenges students face in accessing study materials and seeking academic assistance. By providing a centralized platform for collaboration and knowledge-sharing, our project aims to create a supportive and efficient academic community. The key value proposition lies in enabling students to easily connect with peers, access study materials, and receive help in their courses. The intended benefits include improved productivity, enhanced learning outcomes, and a sense of belonging within the university community.
Schematic Drawings: In Progress…
Tech Stack: Our planned tech stack includes the following technologies, frameworks, and programming languages:
Backend: We will utilize a popular frameworks such as Django (Python) to handle the server-side development(надо уточнить его ли будем юзать или вообще что-то другое!!!). These framework provide robust features for web application development, including database management, user authentication, and API integrations.
Frontend: For the frontend development, we will use web technologies such as HTML, CSS, and JavaScript. Additionally, we may consider utilizing popular frontend framework like React to build a dynamic and responsive user interface.
Database: We will employ a relational database management system (DBMS) such as PostgreSQL or MySQL to store and manage the application data. These DBMSs offer scalability, reliability, and strong data integrity.
Our tech stack choices are justified based on their suitability for web application development, the availability of community support and resources, and the expertise of our team members. The selected technologies offer scalability, performance, and security features necessary for the success of our project.
Anticipating Future Problems: During the project development and deployment phases, we anticipate the following potential challenges:
Technical complexities: Integrating various features and functionalities may introduce technical complexities that require careful planning and implementation. We will address this by conducting thorough architectural design.
Resource limitations: Limited availability of time and resources can impact the project’s progress. To mitigate this, we will prioritize tasks, set realistic deadlines, and ensure effective communication and coordination within the team.
External dependencies: Relying on external APIs or services may introduce potential risks such as changes in their APIs or service disruptions. We will identify alternative providers or implement fallback mechanisms to mitigate these risks.
User engagement: Encouraging users to actively engage and contribute to the platform may require effective user onboarding strategies. We will conduct user testing, gather feedback, and iterate on the platform based on user preferences and needs.
Elaborate Explanations: In Progress…
Report for Week 2 #
Component Breakdown #
We use Nuxt, Django and MongoDB to build the application. Main components:
Frontend: Nuxt, a JavaScript framework for creating user interfaces. Nuxt can communicate with Django via REST API to retrieve data from the database.
Backend: Django, a Python-based web framework. Django can communicate with MongoDB via ORM (Object-Relational Mapping) to load data from the database into applications.
Database: MongoDB, MongoDB can communicate with Django via REST APIs to exchange data between applications.
The responsibilities of components and modules can be defined as follows:
Frontend (Nuxt):
- Creating the user interface
- Processing user requests
- Interacting with Django’s REST API to handle data
Backend (Django):
- Data processing.
- Generating a RESTful API for interacting with Nuxt
- Working with MongoDB via ORM to upload and save data
Database (MongoDB):
- Storing data
- Providing access to data via ORM
Interaction between components and modules can occur as follows:
- Nuxt receives a request from a user and sends it to Django’s server via the RESTful API.
- Django processes the request and returns a JSON response.
- MongoDB receives data from Django and stores it in its database.
- Django loads the data from MongoDB and sends it to the user for display through the UI.
Data Management #
Our application does not require transaction support and at the same time we need the ability to store complex, tree-like structures (courses, messages). Thus, we should use a document-oriented DBMS (e.g. MongoDB) to store information about users, courses, files and discussions. The data will be accessed through the driver of the corresponding database.
User Interface (UI) Design #
Now we have the first version of the main page of the site. In the attached file you can see the layout of the main page.
Integration and APIs #
Assess any external systems, services, or APIs that need to be integrated into your application. Plan how these integrations will be implemented and how data will flow between systems.
At the moment, there is no urgent need to use third-party resources, but we have some ideas on how to improve and diversify our system in the future.
Cloud Storage APIs: We can integrate cloud storage APIs like Google Drive API, Dropbox API, or Microsoft OneDrive API to allow students to upload and share educational materials with large sizes.
Social Media APIs: Integrating social media APIs, such as Facebook API or Twitter API, can enable students to share updates, discuss homework, and engage in conversations related to the courses. These APIs provide features like authentication, posting updates, and retrieving content.
Communication and Messaging APIs: To facilitate real-time communication and collaboration, we can consider integrating APIs like Twilio for SMS and voice communication, or Firebase Cloud Messaging (FCM) for push notifications in mobile applications.
Learning Management System (LMS) APIs: Our project aims to provide a comprehensive learning experience, we can integrate with popular LMS platforms such as Moodle, Canvas, or Blackboard. These platforms often provide APIs that allow you to access course materials, enroll students, and manage assignments.
We also have an idea that will allow you to access files from the service via telegram. This will be possible if the user’s alias is specified in the telegram during registration, making him an accredited user.
Scalability and Performance #
We assume that students of Innopolis University will be able to use our service. Therefore, the supposed load on normal days will not exceed 5 requests per minute. However, we anticipate that students will be more active in browsing the forum pages during exam weeks. Based on this, we planned to use several techniques to maintain stable operation:
Asynchronous Processing. For example, when a user attaches a document to a post, instead of processing it synchronously, we are planning process task asynchronously in the background.This helps maintain responsiveness and improves scalability. Denial-of-Service (DoS) Protection: Use rate limiting techniques to prevent an individual user or IP address from overwhelming your application with excessive requests. For instance, we plan to create a rate limit of 10 rps. Queue of resource-intensive user actions: When the site will be carrying out a lot of resource-intensive processes, users will be queued to ensure stable operation of the service. For example, if there are a lot of users trying to upload or download files from the service, then users will be placed in a queue to not overload the service in one moment.
We will keep these plans in mind during development, however for the MVP we will only use simpler stability techniques such as limiting the rate.
Security and Privacy #
Authentication: We have chosen cookie-based authentication for our web application. During the authentication process, we will verify the user’s credentials and create a session with a unique identifier. Additionally, we have divided users into two roles: “student” and “admin”. This allows us to provide different access rights and functionality for each role.
Secure Connection: To ensure the security of data transmission, we will use the HTTPS protocol. Encrypting data between the client and server will help prevent interception and tampering of information by third parties.
User Data Encryption: Critical user data, such as passwords, will be encrypted on the client-side before being sent to the server. We recommend using strong encryption algorithms, such as bcrypt, to ensure the security of stored passwords in the database. This will help protect users’ confidential data in case of a potential database compromise.
Protection Against XSS Vulnerabilities: To prevent cross-site scripting (XSS) attacks, we recommend using the “httpOnly” flag when setting cookies. This restricts cookie access through JavaScript and reduces the likelihood of unauthorized access to user credentials.
Input Data Handling: During application development, we must pay close attention to handling user input. Validating and filtering input data will help prevent attacks such as SQL injections or scripting vulnerabilities.
Authorization and Access Control: For the administrator role, we need to carefully control access and editing capabilities for posts. Access rights verification and authorization should be implemented on the server-side to prevent unauthorized access and data modification.
Error Handling and Resilience #
Plan for handling errors and exceptions to maintain a reliable and resilient application. Define strategies for error logging, monitoring, and graceful error recovery.
Logging errors: We plan to use sentry framework for error logging. Each incoming error will have its own marking depending on its severity.
Centralized error monitoring: Sentry will also be used as a centralized error monitoring system. There it will be possible to analyze trends and error patterns in order to identify recurring problems and take measures to prevent them. We can also set up critical error notifications in Sentry to quickly respond and fix errors.
Error recovery: We will use the built-in development tools to catch and track errors that occur. We implement such an error mechanism to provide the user with meaningful error messages, while avoiding the disclosure of confidential information. If the error cannot be resolved without the developer’s intervention, then it will be blocked and the developer will be notified immediately.
Automated testing: In order to ensure the reliability of the system already at the development stage, we will use automated testing. It will make it easier to catch errors and will not allow you to release incorrectly working changes in the release.
Deployment and DevOps #
We want to use GitHub Actions for our DevOps practices. So we will use Git as a version control system. Also we are planning using following techniques:
Continuous Integration (CI): we are planning to implement a CI pipeline using GitHub Actions to automate build, set linter and test processes. Continuous Deployment (CD): Set up a CD pipeline to automate the deployment process. we are supposed to use GitHub Actions to deploy our application to the appropriate environment based on triggers, such as branch merges or tags. Thus, we are planning to include automated tests, such as unit tests and end-to-end tests, in the CI/CD pipeline. Our back-end will be write on Python, so we can use library pytest to test it. And for front-end we will use service Cypress.
Week 2 questionnaire: #
Tech Stack Resources #
Here are three books that we find useful:
“Django for Beginners” by William S. Vincent: This book provides a step-by-step guide to building web applications with Django, which is one of the technologies we plan to use. It covers the fundamentals of Django, including database integration, user authentication, and deployment.
“Learning Vue.js 2” by Olga Filipova: Vue.js is a JavaScript framework that we plan to use with Nuxt.js for our project. This book offers a comprehensive introduction to Vue.js and guides through building real-world applications. It covers topics like data binding and routing.
“MongoDB in Action” by Kyle Banker, Peter Bakkum, Shaun Verch, and Douglas Garrett: MongoDB is the NoSQL database we are most probably considering for our project. This book provides practical examples and insights into using MongoDB effectively. It covers data modeling, querying, indexing, and scaling, among other topics.
In order to effectively use these materials and increase the knowledge and experience in our technology stack, we perform the following steps:
- Read books carefully to get a clear understanding of concepts and best practices presented in each technology.
- Take notes and actively work with code examples provided in the books. Trying to reproduce and modify code to reinforce our learning.
- We try to apply the knowledge gained from books directly in our project. Implement features and functions described in the books in our forum web application.
Mentorship Support #
At the moment, we do not have an active mentor who could guide our work. Our team has some experience in project work, and our team leader has already been coordinating the actions of people to achieve the goals of the team. Therefore, we believe that attracting a mentor to supervise our team is not necessary at the moment.
Exploring Alternative Resources #
Here are three resources that we find valuable:
Online Documentation and Tutorials: – Django Documentation ( https://docs.djangoproject.com/): official documentation for Django provides comprehensive guides, tutorials, and references for understanding and using Django effectively. – Vue.js Documentation ( https://vuejs.org/): official documentation for Vue.js offers detailed explanations, examples, and API references to help us understand Vue.js and its ecosystem. – MongoDB Documentation ( https://docs.mongodb.com/): MongoDB documentation provides extensive resources for understanding and working with MongoDB. It includes guides, tutorials, and references for data modeling, querying, indexing, aggregation, and administration.
Online Courses and Tutorials: –Coursera ( https://www.coursera.org/): Coursera offers a wide range of online courses on web development, JavaScript, Vue.js, Django, and MongoDB. We can probably find courses specifically designed to help us learn and apply these technologies effectively. –YouTube ( https://www.youtube.com/): YouTube hosts numerous tutorial channels and coding bootcamps that offer video tutorials on web development, Vue.js, Django, and MongoDB. This resource can provide step-by-step guidance and practical examples.
Online Developer Communities: –Stack Overflow ( https://stackoverflow.com/): it’s a valuable resource for troubleshooting issues and finding solutions related to our tech stack. We will search for questions and answers related to our stack to learn from the experiences of other developers. –GitHub ( https://github.com/): GitHub hosts a vast number of open-source projects, including frameworks, libraries, and sample applications. Exploring repositories on GitHub can provide us insights into real-world implementations and best practices.
Identifying Knowledge Gaps #
Tech Stack Division: – Frontend: Vue.js, Nuxt.js – Backend: Django, MongoDB
Identifying Knowledge Gaps: We acknowledge that we feel less confident in our knowledge of Nuxt.js for frontend and Django for backend. This related to specific features, architectural concepts, or best practices within these frameworks.
Utilizing Targeted Learning Resources: To bridge these knowledge gaps, we can leverage specific learning resources that we mentioned in questions above.
Hands-on Practice and Experimentation: Theory alone won’t suffice to gain expertise. We will actively engage in hands-on exercises that emphasize the specific areas we want to strengthen. This practical experience will enhance our understanding of Nuxt.js and Django and help us familiarize ourselves with their implementation.
Collaborative Learning and Knowledge Sharing: We will encourage collaboration within our team. By sharing relevant resources, discussing concepts, and working on exercises together. Regular study sessions and code reviews will allow us to provide feedback, offer insights, and further solidify our understanding.
Engaging with the Tech Community #
We haven’t really started looking for help in broader tech communities yet, but here are some options we’re considering:
Online Forums and Groups: We can join online forums and groups dedicated to our tech stack, such as Stack Overflow community, or official forums for Nuxt.js, Django, and other related technologies. These platforms allow us to ask questions, seek advice, and learn from the experiences of seasoned professionals.
Social Media Platforms: We can leverage social media platforms like Twitter, LinkedIn and Telegram to follow influential developers, tech communities, and relevant hashtags. Engaging with these platforms allows us to stay updated on the latest trends, discover insightful articles or tutorials, and connect with industry experts.
Leveraging Professional Networks: If we encounter critical tech stack problems that require expert guidance, we can tap into our professional networks to seek assistance. This can involve reaching out to professors or coursemates who have expertise in Nuxt.js, Django, or related technologies. Their insights and guidance can help us overcome challenges and expand our understanding.
Learning Objectives #
We understand the importance of setting specific learning objectives to enhance our understanding of our tech stack. Here are the learning objectives we can set for ourselves this project, along with strategies and resources to achieve them:
Learning Objective: Improve proficiency in Nuxt.js for frontend development. Strategy: Allocate dedicated time for studying Nuxt.js concepts and features. Resources: Utilize online tutorials, official documentation, and relevant books specifically focused on Nuxt.js. Complete coding exercises to practice Nuxt.js implementation.
Learning Objective: Enhance expertise in Django for backend development. Strategy: Engage in focused learning sessions dedicated to Django. Resources: Read project-based books on Django, follow online tutorials, and refer to the official Django documentation for in-depth understanding. Implement Django features and functionalities in simple exercises to gain experience.
Learning Objective: Improve understanding of integrating MongoDB with Django. Strategy: Explore resources that cover the integration of MongoDB and Django. Resources: Refer to online tutorials and official documentation that specifically address the integration of Django and MongoDB. Implement simple projects using Django and MongoDB to gain practical experience.
Learning Objective: Encourage collaborative learning within the team. Strategy: Organize regular team study sessions and code reviews. Resources: Share resources, discuss challenging concepts, and exchange knowledge within the team. Collaboratively work on sample projects or coding exercises, providing feedback and support to one another.
Sharing Knowledge with Peers #
We understand the importance of sharing knowledge and expertise within our team. Here’s how we facilitate the exchange of insights and experiences related to our tech stack:
Organizing Knowledge-Sharing Sessions: We schedule regular knowledge-sharing sessions where team members take turns presenting on specific topics related to our tech stack. These sessions include demonstrations, code walkthroughs, and discussions to ensure a comprehensive understanding of the concepts.
Brainstorming: We encourage open discussions and brainstorming sessions where team members share their ideas, approaches, and best practices. This stimulates collaboration and allows everyone to benefit from different perspectives and experiences.
Code Reviews: Conducting code reviews is an excellent opportunity to share knowledge and provide feedback. By reviewing each other’s code, we can identify areas for improvement, suggest alternative solutions, and share insights on coding standards and best practices.
Documentation: Maintaining a shared documentation repository is valuable for documenting important insights, learnings, and common challenges encountered during a project. This knowledge base serves as a reference point for all team members.
Team Chat: We use team chat to discuss tech stack-related topics, share useful articles, resources, and engage in casual conversations. This encourages ongoing knowledge sharing and provides a platform for asking questions and seeking advice.
How have you leveraged AI to compensate for any lacking expertise in your tech stack? #
Using ChatGPT for Research: We have utilized ChatGPT to ask questions and seek information on various topics related to our tech stack. By interacting with ChatGPT, we have been able to quickly find useful books, gather relevant information, and receive guidance on specific areas of our tech stack.
AI-Driven Code Editor: We have employed AI-powered code editor such as GitHub Copilot that leverage AI techniques to provide intelligent code completion, suggestions, and error detection. This tool helps streamline the coding process, improve efficiency, and offer valuable insights.
Tech Stack and Team Allocation #
We will use the following structure to describe a team member.
Name
Role Tasks
Inga Ezhova
Team Lead, Project Manager Define weekly tasks for development and design, monitor team communication, compile weekly reports, organize online meetings
Demid Efremov
Leader of the back development team Development of the back part of the project, management of the back development team
Ruslan Khairov
Backend developer Implement needed Django features for project, MongoDB integration, Api integration
Zamira Galyautdinova
Backend developer Implement needed Django features for project, MongoDB integration, Api integration
Maxim Insapov
Leader of the Front development team Development of the back part of the project, management of the back development team
Rostislav Zhukov
Frontend developer Creating user interface, Processing user requests
Anna Lapa
Frontend developer Creating user interface, Processing user requests
Anastasiia Kuklina
Designer Creating a website appearance in Figma, prototyping application pages
To regulate teamwork, we have introduced some rules for productive work and achieving success on a project with pleasure and mutual respect. We decided to organize our work in weekly sprints, so at the beginning of each week we will have planning and discussion of the task to understand what and how we will implement it this week.
During the week, the team leader regularly contacts all team members, separately with the back, front, and design to find out the current difficulties and load planning of teammates.
To track the success of each participant’s work, we decided to use trello, where the team leader will be able to set common tasks for the week and everyone will be able to set personal tasks for themselves and regulate their implementation.
Week #3 #
Introduction #
Introducing UniHub: Empowering University Students Through Collaboration and Resource Sharing.
Greetings, IU students! Kringe Production are excited to introduce UniHub, platform designed to address challenges you face in your academic journey. UniHub provides a centralized space where students can collaborate, share resources, and support each other, revolutionizing the way you navigate university life.
Problem: We understand struggles of limited study materials, lack of a centralized source of information and communication with other courses that hinder your academic progress.
Solution: UniHub is a mutual help forum exclusively for university students. It offers centralized storage for study materials, enabling easy access to student notes, cheetsheats and other resources. You can connect with knowledgeable peers, ask questions and find study partners.
Key Features:
Centralized Study Materials: Easily upload, access, and share study resources categorized by courses. Peer-to-Peer Interaction: Connect with students who excel in specific subjects, seek advice, and find study partners.
Benefits:
Enhanced Access to Study Materials: Save time by finding and sharing study resources effortlessly. Collaborative Learning: Tap into the expertise of peers, deepening your understanding of course material. Time and Cost Savings: Access shared resources, saving both time and money.
Differentiation:
Tailored to University Students: UniHub is designed specifically for the unique needs of university students. Comprehensive Study Material Storage: A centralized repository covering a wide range of courses.
Join UniHub today and unlock a world of collaboration, resource sharing and academic success!
Prototype Features: #
Main Page of Forum: prototype includes a main page that serves as central hub for users to access various features of UniHub(название все еще подлежит обсуждению). It provides a user-friendly interface where students can explore different courses, interact with discussions and access relevant resources.
Sidebar with Course Navigation: prototype features a sidebar that enables easy navigation between different courses. Users can select specific course from sidebar to view course-related discussions, resources and study materials.
Course Files Page: prototype includes a dedicated page for each course where students can access and share study materials, such as student notes, cheetsheats and other relevant resources. Page provides an organized layout, allowing users to upload, download, and interact with the course files.
Backend API: to facilitate efficient data management, API has been developed for the backend. This API allows seamless communication between frontend and backend, enabling convenient handling of user data, course information, file uploads, and other essential functionalities.
User Interface:
Main page of forum feature a clean and intuitive design with sections for recent and popular discussions and resource categories.
Pic. 1. Main Page in desktop version in dark mode
Pic. 2. Main Page in mobile version in dark mode
Pic. 3. Main Page in desktop version in light mode
Sidebar with course navigation display a list of courses, organized by year of study, e.g. first-year undergraduate students. Clicking on a course in the sidebar would lead to the corresponding course page, where users can find and interact with course-specific resources and discussions.
Pic. 4. Sidebar in mobile version in dark mode
Course files page present a clear layout with options to upload and download files, along with features for filtering and searching for specific resources within the course.
Pic. 5. Upload Page in desktop version in dark mode
Pic. 6. Upload Page in desktop version in light mode
Pic. 6. Upload Page in mobile version in light mode
Development Report #
Problems and Difficulties
During the development of the project on the Django platform, we encountered several problems and difficulties, especially considering our previous experience of developing on the platform.NET.
The main problems we have encountered:
The need to learn a new programming language - Python. Architectural differences of Django from .NET, requiring rethinking of design patterns and development approaches. Lack of an integrated development environment, requiring the search and configuration of a suitable development environment for Django. We also had to get used to the Django architecture, including the MTV model (Model-Template-View), which required time and adaptation to the new roles and responsibilities of each component.
All these difficulties were overcome thanks to our perseverance, study and application of new knowledge and skills in development on the Django platform.
From the problems of developing the front part of the project, the problem of accessing two different servers via one port was identified, which was solved by our developers through a reverse proxy.
Feedback
I am impressed by the prototype features you have developed. The main page of the forum, with its user-friendly interface, will make it easy for students to engage in discussions, and access relevant resources. The sidebar with course navigation will enable seamless navigation between courses, enhancing the overall user experience. The user interface of UniHub, as showcased in the provided screenshots, looks clean and intuitive - good job on that.The differentiation of UniHub as a platform tailored specifically for university students sets it apart from other generic resources. I think you may want to frame your project as essentially a social network with enhanced features for University students.
Also, appreciate your transparency in sharing the problems and difficulties faced during the development process. It is evident that your team’s perseverance and dedication will help you get through.
Good job, 5/5 for the week!
Week #4 #
External Feedback: #
Gathering feedback from our target audience has been a top priority for us. We have taken initiative to collect valuable firsthand feedback from our community, our friends in university. Their perspectives and insights have been immensely helpful in assessing the usability, functionality, and overall satisfaction with our forum platform. For example, one of the testers noted that if he does not remember what year the course was in, then finding it can be a little problematic and suggested doing something like an input field for searching by course name. Another user mentioned that a button to change site’s theme would be a great addition. This kind of feedback serves as a basis for our upcoming refinements and iterations, allowing us to enhance user experience and make necessary improvements. We are grateful for honest feedback received, which has played a vital role in shaping direction of our project.
Testing: #
Testing is an essential aspect of our development process, and we have made significant progress in this area. We conducted load testing using K6 to evaluate performance of our platform. During testing, we simulated various scenarios, such as having 100 users for a few minutes to simulate exam-related load, and using 350 users for a minute to test stress conditions. In case of stress test we encountered a 42% request failure rate, which highlights need for further optimization. However, we have planned to address these issues on next week or after minimum viable product (MVP) stage. Additionally, we performed testing with 50 users for 30 minutes to simulate normal usage of forum. Furthermore, we ensured that our database is functioning correctly and we tested our server to verify its stability. These testing efforts have provided us with valuable insights into the user experience, allowing us to identify areas for improvement and address any issues or bugs that arose during development.
Iteration: #
In past week, we have made significant progress in terms of iteration and refinement. We have regularly assessed our project’s progress, comparing it against our initial goals and objectives. Based on feedback we collected, we made and will continue to make necessary adjustments and refinements to our design, features, and functionalities. This iterative approach has allowed us to create a product that continuously evolves and improves. While it may seem challenging to iterate on early version of project, we recognize that this is opportunity to eliminate most of mistakes and make substantial improvements.
Throughout this week, we have made improvements to front-end, created database, tested it and server, and collected valuable feedback from our friends. These efforts have significantly contributed to our progress, and we are determined to continue iterating and refining our platform to ensure a seamless user experience.
Week 5 #
This week, we proactively scheduled meetings and interviews with users and fellow students. By engaging in direct conversations, we aim to collect valuable feedback on the current version of UniHub. This feedback will provide insights into usability, functionality and overall satisfaction of our product. We believe that gathering broader feedback will help us refine and enhance UniHub to better meet needs of our target users.
To ensure a systematic approach to feedback collection, we prepared a comprehensive feedback collection plan. This plan includes specific questions and areas of focus to gather feedback on, covering aspects such as usability, functionality and overall satisfaction. Online forms or surveys enable users to quantitatively assess our product and its features, providing us with valuable data to analyze and incorporate into our refinements.
We will conduct user surveys and feedback sessions to gather input on UniHub’s usability, functionality and overall satisfaction. These sessions will provide us with direct insights into users’ experiences and perspectives, allowing us to understand their needs and expectations better. By actively engaging users in the feedback process, we can make informed decisions and prioritize improvements based on their input.
Throughout feedback collection process, we diligently document all feedback received from our friends. This documentation ensures that specific areas of improvement or enhancement are clearly identified and recorded. By documenting feedback, we can refer back to it during refinement and implementation stages, ensuring that we address all relevant suggestions and concerns.
Based on the feedback received and prioritization process, we implement necessary enhancements to UniHub. These changes carried out following our project’s development process, ensuring that each modification is carefully integrated into existing system. By following structured approach, we can effectively incorporate user feedback and continuously improve functionality and user experience of UniHub.
User Feedback:
We have received valuable feedback from our users, which has been instrumental in shaping the further development of UniHub. Here are some examples of feedback we have collected:
“I appreciate theme switcher feature as it allows me to customize interface based on my preferences. It adds a personal touch to the overall user experience. Now I can choose a theme that suits my style, making UniHub more visually appealing and engaging.”
“Notifications feature will be a great addition to UniHub. With it I will stay updated on relevant discussions and announcements without constantly checking the platform. It would help me stay engaged with my courses and new files and ensures that I don’t miss any important information.”
“User interface is intuitive and user-friendly. Navigating through different sections and accessing course materials is straightforward. Clear organization of resources and discussions enhances the overall user experience and makes it easier to find what I need.”
Team Progress:
During this week, our team made significant progress in enhancing UniHub based on user feedback and addressing technical aspects. Here are the key achievements:
Feature Enhancements: We actively listened to user requests from previous week and successfully implemented highly requested features. Addition of search functionality in courses has greatly improved usability of UniHub, enabling users to quickly locate specific resources and engage in focused discussions. Additionally, we introduced a theme switcher feature, allowing users to customize interface based on their preferences.
Backend API Development: Our team successfully completed development of backend API, ensuring seamless communication between frontend and server. This milestone enables efficient data management, user authentication and smooth integration of features across platform.
Database and User Management: We dedicated time and effort to refine database structure and optimize user management functionalities. These improvements enhance overall performance and reliability of UniHub, ensuring that user data is securely stored and accessible when needed.
Server Architecture and Resource Usage: We made significant advancements in optimizing server architecture and resource utilization. As a result, our server is now capable of handling a high load of 500 users with only a minimal loss of requests (0.1%). This improvement guarantees a smooth and reliable user experience, especially during peak usage periods such as exams or when there is a surge in activity.
Pic. 1. Stress test for 500 users
Alright, amazing progress!. Stress tests are nice!. Noted the absence of the final presentation on the top of the file - please, upload the file.
5 the week! And good luck with the project and the final presentation!