0% found this document useful (0 votes)
8 views17 pages

GitHub Workflow Guide for Teams

This document outlines a GitHub workflow guide for a three-member team to collaborate on a student website project using React.js for the frontend and Django for the backend. It includes steps for setting up the repository, branching strategy, workflow for each member, merging code, handling conflicts, and deployment plans. Additionally, it details an Agile development plan with sprints, roles, responsibilities, and required technologies for effective collaboration.

Uploaded by

rehanraza3432
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views17 pages

GitHub Workflow Guide for Teams

This document outlines a GitHub workflow guide for a three-member team to collaborate on a student website project using React.js for the frontend and Django for the backend. It includes steps for setting up the repository, branching strategy, workflow for each member, merging code, handling conflicts, and deployment plans. Additionally, it details an Agile development plan with sprints, roles, responsibilities, and required technologies for effective collaboration.

Uploaded by

rehanraza3432
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Here’s a GitHub workflow guide for your team to collaborate efficiently.

GitHub Workflow for Your Team (3 Members)

1️⃣ Set Up the Repository

1. One team member (Team Lead) creates a GitHub repository.

2. Add other team members as collaborators (Go to Settings → Manage Access → Invite
Collaborators).

3. Clone the repo locally:

4. git clone [Link]

2️⃣ Branching Strategy

Each team member works on a separate branch:


main – Production-ready code (never directly push here).
frontend – For [Link] UI development.
backend – For Python APIs & database integration.
database – For SQL setup & queries.

Use the following command to create and switch to your branch:

git checkout -b your-branch-name

3⃣ Workflow for Each Member

When You Start Working:

1. Pull latest changes before starting work:

2. git checkout main

3. git pull origin main

4. git checkout your-branch-name

5. Make changes, test locally

o If working on frontend, run:

o npm start # Start React app

o If working on backend, run:

o python [Link] # Start Python backend

6. Stage & commit changes:

7. git add .
8. git commit -m "Added login API"

4️⃣ Merging Code & Resolving Conflicts

When You Finish a Feature:

1. Push your branch to GitHub:

2. git push origin your-branch-name

3. Open a Pull Request (PR) in GitHub:

o Go to GitHub → Pull Requests → New PR.

o Select your branch to merge into main.

o Add a description of changes.

4. Code Review

o Other members review and test your code.

o If everything is fine, approve & merge the PR.

5. Pull latest changes before starting new work:

6. git checkout main

7. git pull origin main

8. git checkout your-branch-name

9. git merge main

5️⃣ Handling Merge Conflicts

If you see a merge conflict, GitHub will highlight it.


Steps to resolve:

1. Open the file with conflicts (git status shows which ones).

2. Manually edit the file to keep the correct code.

3. Stage, commit, and push after resolving:

4. git add .

5. git commit -m "Resolved merge conflict"

6. git push origin your-branch-name

6️⃣ Deployment Plan


Frontend ([Link]): Deploy on Vercel or Firebase Hosting.
Backend (Python): Deploy on Render, Heroku, or Railway.
Database (SQL): Use Supabase (PostgreSQL) or Firebase SQL.

Summary:

✔ Use branches (frontend, backend, database)


✔ Pull latest code before starting work
✔ Commit small changes regularly
✔ Use pull requests for merging
✔ Resolve conflicts carefully

With this workflow, your team will collaborate smoothly!


Would you like a GitHub actions setup for automatic testing & deployment?

PROCESS

Process Structure for Your Team (3 Members) – Response 2️

Since you have 3 team members working separately, here’s a structured approach to divide tasks
efficiently and estimate development time.

Phase 1️: Planning & Setup (1️-2️ Days)

Finalize requirements (Login, Roadmaps, Coding Section, etc.)


Set up GitHub/GitLab for collaboration
Decide who will work on what (Divide frontend, backend, database tasks)
Set up [Link] project and database (SQL)

Phase 2️: Development (2️-3 Weeks)

Each team member should focus on a specific part:

Team Member 1️ – Frontend ([Link], UI/UX)

• Week 1️: Build Login/Sign-up Page (basic UI, input fields, validation)

• Week 2️: Build Home Page & Roadmaps Section (profile, roadmap cards)

• Week 3: Build Coding Section UI (table of problems with links)


Team Member 2️ – Backend (Python, APIs, Authentication)

• Week 1️: Set up Flask/Django server and SQL database

• Week 2️: Implement Login/Signup API (store user details in SQL)

• Week 3: Implement User Roadmap Selection API (fetch & update roadmap data)

Team Member 3 – Database & Integration (SQL, API-Frontend Connection)

• Week 1️: Create SQL tables (Users, Roadmaps, Problems)

• Week 2️: Connect Frontend to Backend APIs (Axios/Fetch requests in React)

• Week 3: Handle form submissions & authentication (JWT tokens, cookies)

Phase 3: Testing & Fixes (3-5️ Days)

Unit testing (check each function/API works properly)


Fix UI bugs & database errors
Ensure login sessions work correctly
Deploy on Firebase/Vercel (for frontend) & Render/Heroku (for backend)

Total Time Estimate: 3-4️ Weeks

With good coordination, you can finish within a month!

Would you like me to create a GitHub workflow guide for smooth collaboration?

TECH STACK

Here’s a list of all the technologies & tools you are using for your student website project

Frontend (User Interface)

HTML, CSS, JavaScript – For structuring & styling the web pages.
[Link] – For building dynamic UI components.
Tailwind CSS / Bootstrap (Optional) – For faster and responsive styling.

Backend (Server & APIs)

Python (Flask or Django) – For handling authentication, database queries, and API requests.
FastAPI (Optional) – If you want a faster & modern API framework instead of Flask.

Database (Storing User Data & Problems)


SQL (PostgreSQL / MySQL / SQLite) – For storing user login details, roadmaps, coding problems.
Supabase (Optional) – If you want a managed PostgreSQL database with easy APIs.

Authentication & Security

JWT (JSON Web Tokens) – For secure user login sessions.


Bcrypt (Python Library) – For encrypting user passwords.

Deployment & Hosting

Frontend ([Link]):

• Vercel – Best for deploying React apps.

• Firebase Hosting – Alternative option.

Backend (Python Flask/Django):

• Render – Free hosting for Python servers.

• Railway / Heroku – Other hosting options.

Database (SQL):

• Supabase / PlanetScale – For cloud-based SQL storage.

Developer Tools & Workflow

Git & GitHub – For version control & collaboration.


GitHub Actions (Optional) – For automatic deployment & testing.
Postman – For testing API endpoints.
VS Code – Recommended code editor.

Additional Features (Optional)

Firebase Authentication – If you prefer Google login instead of manual sign-up.


HackerRank/LeetCode Problem Links – Stored in SQL for easy access.

Final Tech Stack Summary

Frontend: [Link], Tailwind CSS/Bootstrap


Backend: Python (Flask or Django), FastAPI (Optional)
Database: SQL (PostgreSQL/MySQL), Supabase (Optional)
Authentication: JWT, Bcrypt
Deployment: Vercel (Frontend), Render/Railway (Backend)
Tools: GitHub, Postman, VS Code

This stack is powerful, scalable, and free to use for 1️00+ daily users!
Would you like a pre-configured GitHub repository with a starter template?

Agile Development Plan for Your Student Website Project

Since your main goal is to help students, learn, and work, using the Agile methodology will allow
your team to work in small iterations, track progress, and improve continuously.

Agile Workflow Overview

• Sprint Duration: 1️ Week (Short iterations to track progress & adjust)

• Daily Standup Meetings: 1️5️ mins to discuss progress, blockers & next steps

• Sprint Review Meetings: Every end of the week to track completion & improvements

• Kanban Board: Use Trello, Jira, or GitHub Projects for task tracking

Agile Process Breakdown

Sprint 0 (Planning & Setup) – 1️ Week

Define core features (Login, Roadmaps, Coding Section, etc.)


Divide responsibilities among 3 team members
Set up GitHub repo, database, and frontend/backend boilerplate
Set up Agile Board (Trello, Jira, or GitHub Projects)

Sprint Review Meeting (End of Week)

• Check repo setup & initial codebase

• Ensure the team understands the plan

Sprint 1️: Authentication & Basic UI (Week 1️)

Goals

Frontend: Build Login & Sign-up Page ([Link], UI design)


Backend: Create User Authentication API (Python, JWT, SQL)
Database: Set up Users table in SQL

Team Responsibilities
Frontend (Member 1️): Login page UI + form validation
Backend (Member 2️): API for user login/signup + JWT authentication
Database (Member 3): Store user data in SQL

Sprint Review Meeting

• Test login/signup functionality

• Fix any issues before moving to the next sprint

Sprint 2️: Home Page & Roadmaps (Week 2️)

Goals

Frontend: Design Home Page UI (User profile, roadmap selection)


Backend: API for fetching & updating selected roadmap
Database: Store roadmap data

Team Responsibilities

Frontend (Member 1️): Build UI components for Home Page


Backend (Member 2️): Create API for retrieving/updating roadmaps
Database (Member 3): Store roadmap categories in SQL

Sprint Review Meeting

• Test if users can select and update roadmaps

• Gather feedback & improve

Sprint 3: Coding Section (Week 3)

Goals

Frontend: Build a table to display coding problems (problem, link, status)


Backend: API to store & update problem status (completed/not completed)
Database: Store problem data (title, link, status)

Team Responsibilities

Frontend (Member 1️): Display problems in a table + "Mark as completed" feature


Backend (Member 2️): API for updating problem completion status
Database (Member 3): Store problem details in SQL

Sprint Review Meeting

• Ensure coding section updates problem status correctly

• Fix bugs & improve UI


Sprint 4️: Testing & Deployment (Week 4️)

Goals

Test all features & fix bugs


Deploy frontend on Vercel & backend on Render/Railway
Prepare project documentation (README, API docs)

Team Responsibilities

Frontend (Member 1️): Fix UI issues, test responsiveness


Backend (Member 2️): Optimize API performance, fix security issues
Database (Member 3): Ensure data integrity & backups

Sprint Review Meeting

• Live demo of the deployed website

• Get feedback & plan future improvements

Daily Standup Meeting Agenda (1️5️ Mins)

1️. What did you work on yesterday?

2️. What are you working on today?

3. Any blockers/issues?

4️. Next steps?

Tracking Progress with Trello/Jira

• Create 3 columns: To Do → In Progress → Done

• Add tasks as cards & move them as work progresses

Final Goal:

By the end of 1️ month, your team will have a fully working website
Would you like a Trello board template for easy tracking?

For Phase 1️: Planning & Setup (1️-2️ Days), here’s a structured plan, covering technologies to learn,
backend choices, role distribution, meeting agenda, and setup instructions.

Topics to Learn for Development

To effectively build the student website, here are the required topics based on each role:
Frontend ([Link], HTML, CSS, JavaScript)

• [Link] Basics: Components, Props, State, Hooks (useState, useEffect)

• Routing (React Router)

• API Calls (Fetch, Axios)

• UI Design (CSS, Tailwind CSS)

• Form Handling & Validation

• Responsive Design (Media Queries, Flexbox, Grid)

Backend (Python, Django, SQL)

• Python Basics (If not known already)

• Django:

o Models, Views, Templates (MVT Structure)

o Django Rest Framework (DRF) for APIs

o Authentication (JWT, Sessions)

• SQL:

o Basics of SQL Queries

o Database Design (Tables, Relationships)

o Writing CRUD Operations (Create, Read, Update, Delete)

Database (SQL)

• MySQL or PostgreSQL Setup

• Database Schema Design

• Writing Queries for User Authentication & Roadmaps

Backend Choice: Django + SQL

Which one is easier: Django or SQL?

• SQL is just a database, used to store and retrieve data.

• Django is a framework that simplifies backend development.

• Best Choice: Django + SQL because:

o Django has built-in authentication and admin panel.

o Django ORM (Object-Relational Mapping) makes it easier to work with databases.

o REST API can be built quickly using Django Rest Framework (DRF).

o It handles security better than raw SQL.


🏗 Roles & Responsibilities

1️. Frontend Developer ([Link])

• Design Login/Signup Page, Home Page, Roadmaps Page, and Coding Section UI.

• Implement API calls to backend (e.g., login requests).

• Handle form validation and UI responsiveness.

2️. Backend Developer (Django + SQL)

• Set up Django project and create API endpoints.

• Implement User Authentication (Login, Signup) using Django Auth.

• Create database schema and connect it with Django ORM.

• Develop APIs for fetching roadmaps and coding challenges.

3. Database Admin (SQL)

• Design database tables: Users, Roadmaps, Coding Challenges.

• Optimize database queries for performance.

• Maintain database backups and ensure data security.

Morning Meeting Plan (Day 1️ & Day 2️)

Time: 9:00 AM - 1️0:00 AM

Day 1️ Meeting

1️. Quick Discussion (1️5️ min)

o Review project requirements.

o Assign roles and tasks.

2️. Setup Tasks (30 min)

o Create GitHub/GitLab repository.

o Set up a shared Notion/Google Docs for tracking progress.

3. Development Kickstart (1️5️ min)

o Backend starts Django setup.

o Frontend sets up [Link] project.

o Database team starts schema planning.

Day 2️ Meeting

1️. Progress Check (1️5️ min)


o Review completed setups.

o Identify roadblocks.

2️. Backend & Frontend Sync (30 min)

o API endpoint discussion.

o Database schema finalization.

3. Next Steps (1️5️ min)

o Set deadlines for individual tasks.

o Discuss debugging strategies.

Development Setup Instructions

1️⃣ Set Up GitHub/GitLab

• One team member creates a repo.

• Others clone it:

• git clone <repo-link>

• Set up branching strategy (main, frontend, backend branches).

2️⃣ Install Required Software

For Frontend:

• Install [Link] & npm

• Install [Link]:

• npx create-react-app student-website

• cd student-website

• npm start

• Install React Router:

• npm install react-router-dom

For Backend:

• Install Python & Django:

• pip install django djangorestframework

• Start Django project:

• django-admin startproject backend

• cd backend

• python [Link] runserver


• Create app for user authentication:

• python [Link] startapp authapp

For Database:

• Install MySQL/PostgreSQL

• Create a database:

• CREATE DATABASE student_website;

Final Deliverables for Phase 1️

GitHub repository is set up.


[Link] and Django projects are initialized.
Database schema is drafted.
API endpoints are planned.

This will prepare you for Phase 2️: Development

Understanding Where the API is Used & The Logic Behind It

APIs (Application Programming Interfaces) act as a bridge between the frontend ([Link]) and the
backend (Django). They allow the frontend to fetch data from the backend and send user inputs to
be processed.

Where is the API Being Used?

Here’s where we need API calls in the student website:

Feature Frontend ([Link]) Backend (Django API) Database (SQL)

User enters details, clicks API receives details,


User Signup Stores user data
"Sign Up" validates & saves user

User enters credentials, API checks credentials,


User Login Checks user credentials
clicks "Login" returns JWT token

User selects a roadmap


Fetch Roadmaps API sends roadmap details Retrieves roadmap data
to view

Fetch Coding User selects a coding


API sends problem details Retrieves problem data
Problems problem

Mark Problem as User clicks "Mark as Updates problem


API updates status
Solved Solved" completion status
API Logic Behind Each Feature

1️⃣ User Signup (Registering a New User)

Flow:

1️. User enters name, email, password in React form.

2️. React sends this data to the API (/api/signup/).

3. Backend validates & saves the user.

4️. API responds with success/failure message.

API Endpoint (POST /api/signup/)

• Frontend (React) Code:

• const registerUser = async () => {

• const response = await fetch('[Link] {

• method: 'POST',

• headers: { 'Content-Type': 'application/json' },

• body: [Link]({ name, email, password })

• });

• const data = await [Link]();

• [Link](data); // Success or Error Message

• };

• Backend (Django API Code in [Link]):

• from [Link] import User

• from rest_framework.response import Response

• from rest_framework.decorators import api_view

• @api_view(['POST'])

• def signup(request):

• data = [Link]

• if [Link](username=data['email']).exists():

• return Response({'error': 'User already exists'}, status=4️00)

• user = [Link].create_user(username=data['email'], password=data['password'])

• return Response({'message': 'User created successfully'})


• Database Query (SQL Equivalent)

• INSERT INTO users (username, password) VALUES ('student@[Link]',


'hashed_password');

2️⃣ User Login (Authentication & JWT Token)

Flow:

1️. User enters email, password in React form.

2️. React sends data to API (/api/login/).

3. Backend checks credentials and returns a JWT token.

4️. React stores token in local storage for authentication.

API Endpoint (POST /api/login/)

• Frontend Code:

• const loginUser = async () => {

• const response = await fetch('[Link] {

• method: 'POST',

• headers: { 'Content-Type': 'application/json' },

• body: [Link]({ email, password })

• });

• const data = await [Link]();

• if ([Link]) {

• [Link]('token', [Link]); // Save token

• }

• };

• Backend Code (Django API using JWT Authentication):

• from rest_framework_simplejwt.tokens import RefreshToken

• from [Link] import authenticate

• @api_view(['POST'])

• def login(request):

• data = [Link]

• user = authenticate(username=data['email'], password=data['password'])


• if user is None:

• return Response({'error': 'Invalid Credentials'}, status=4️01️)

• refresh = RefreshToken.for_user(user)

• return Response({'token': str(refresh.access_token)})

• Database Query (SQL Equivalent)

• SELECT * FROM users WHERE username = 'student@[Link]' AND password =


'hashed_password';

3⃣ Fetching Roadmaps

Flow:

1️. React requests roadmaps from API (GET /api/roadmaps/).

2️. Backend fetches roadmaps from the database.

3. API sends roadmap list to React.

4️. React displays roadmaps to the user.

API Endpoint (GET /api/roadmaps/)

• Frontend Code (React Fetching Roadmaps)

• const fetchRoadmaps = async () => {

• const response = await fetch('[Link]

• const data = await [Link]();

• setRoadmaps(data);

• };

• Backend Code (Django API in [Link])

• from .models import Roadmap

• from .serializers import RoadmapSerializer

• @api_view(['GET'])

• def get_roadmaps(request):

• roadmaps = [Link]()

• return Response(RoadmapSerializer(roadmaps, many=True).data)

• Database Query (SQL Equivalent)


• SELECT * FROM roadmaps;

4️⃣ Fetching & Marking Coding Problems

Flow:

1️. React requests coding problems (GET /api/coding-problems/).

2️. Django fetches problems and returns JSON.

3. React shows the problem list.

4️. User marks problem as solved (POST /api/mark-solved/).

5️. Django updates the database.

API Endpoint (POST /api/mark-solved/)

• Frontend Code:

• const markProblemSolved = async (problemId) => {

• const response = await fetch('[Link] {

• method: 'POST',

• headers: { 'Content-Type': 'application/json' },

• body: [Link]({ problem_id: problemId })

• });

• [Link](await [Link]());

• };

• Backend Code (Django API)

• from .models import SolvedProblem

• @api_view(['POST'])

• def mark_solved(request):

• data = [Link]

• [Link](user=[Link], problem_id=data['problem_id'])

• return Response({'message': 'Problem marked as solved'})

• Database Query (SQL Equivalent)

• INSERT INTO solved_problems (user_id, problem_id) VALUES (1️, 1️01️);

🏗 Final API Structure


API Endpoint Method Description

/api/signup/ POST Register new user

/api/login/ POST Authenticate user & return token

/api/roadmaps/ GET Get list of all roadmaps

/api/coding-problems/ GET Get list of coding problems

/api/mark-solved/ POST Mark coding problem as solved

Final Thoughts

• Frontend (React) calls APIs using Fetch or Axios.

• Backend (Django) processes data & interacts with SQL.

• Database (SQL) stores user data, roadmaps, and coding progress.

• JWT Authentication ensures security in login.

Now, the team can start building API endpoints and integrating them with React frontend!

You might also like