Code Monkey home page Code Monkey logo

swppfall2022-team9's Introduction

LinkLink

Build Status Quality Gate Status Coverage Status

Preview

2022-12-18.3.27.25.mov

Site Address

https://linklinkchon.netlify.app/

How to run

Frontend

  • yarn installf
  • yarn start

Backend

  • cd backend
  • pip install -r requirements.txt
  • python manage.py runserver

How to test

Frontend

Unit Test

Used Enzyme for frontend testing

  • yarn testf

Lint Check

Used Eslint with eslint-config-airbnb

  • eslint srcor yarn lintf

Backend

Unit Test

Used Pytest and Coverage

  • cd backend
  • coverage run --branch --source='./linklink' manage.py test linklink/tests

Or type:

  • yarn testb

Lint Check

Used Pylint

  • cd backend
  • pylint --rcfile=pylintrc **/*.py

Or type:

  • yarn lintb

Language & Framework Versions

  • python == 3.8
  • Django == 4.1

Backend Commands

Load initial fake data

  • cd backend
  • python manage.py loaddata */fixtures/*.json

Or simply type:

  • yarn loaddb

swppfall2022-team9's People

Contributors

dongjoocha avatar notiona avatar hunkim98 avatar jadenpark0 avatar

Stargazers

 avatar 이석찬 / Lee Sukchan avatar  avatar  avatar  avatar

Watchers

Alchan Kim avatar  avatar

swppfall2022-team9's Issues

[TASK] Model Management(testing server)

Detail

  • Create and manage Django models that are required for LinkLink
  • List and field specifications of the model is specified in the class diagram of the Design & Planing Doc.

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Graph Panning / Zooming

Detail

  • Create canvas class for canvas HTMLElement
  • Create render methods for drawing a user node
  • Create functions for converting cartesian coordinates to screen coordinates
  • Create TouchyEvent type to handle both mouse event and touch event
  • Implement onMouseDown, onMouseMove, onMouseUp, onMouseOut event listeners for implementing panning and zooming events
  • Create functions for converting mouse/touch offset to world point or screen point
  • Create PC-mouse-based panning/zooming functions - handleWheel
  • Create mobile-touch-based panning/zooming functions - handlePinchZoom

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Upload Image to Server(cloudinary)

Detail

  • Allow file to be sent from frontend to backend
  • Connect Cloudinary in the backend side
  • Save cloudinary image url in user profile DB

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Send FriendRequest via FriendRequestToken

Detail

  • send Pending FriendRequest from=token user, to=current user
  • For the case in which there already exists a FriendRequest between the two users:
  • Accepted -> Accepted (should remain as Accepted)
    Pending -> Pending (should remain as Pending, set sender & getter)
    Rejected -> Pending (should now be Pending, , set sender & getter)

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Change Profile

Detail

  • The same implementation as create profile; only difference is that it is rendered to signed up users, when edit profile button is clicked

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Sign In Page

Detail

  • Implement Signin related APIs, with django.contrib.auth features.
  • Implement a frontend view for the sign in page, listing forms of required user information.

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Friend List Sidebar

Detail

  • Implement Friend List Bar rendered on the left side of the main graph visualization page
  • Implement a list view of 1-chons and a toggle button that renders the 2-chons

Checklist

  • Design (UPD: 11/06)
  • Implementation (UPD: 11/06)
  • Testing (UPD: 11/14)
    • Unit Test

some CSS bugs

[x] Tag distribution of friends
image
image

[x] Maybe better spacing is required
image

Will add more if I find any. If fixed, please check the box and remove the attached image for better visibility.

[TASK] View Profile

Detail

  • Basic profile page that renders profile pictures, user information, list of 2-chons, etc.
  • Render slightly different pages based on whether the user is viewing his/her own profile, 1-chon's profile, or 2-chon's profile

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Friend Request Token (api url)

Detail

  • Implement backend APIs to support friendRequestToken one-chon adding route.
  • Both the url token parsing & friend request token validity check should take place.

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Chat

Detail

  • Design and implement chat service between friends using WebSocket and Django Channels
  • Make a test code for testing chat feature

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Implement QualityTags as requests

Detail

  • In order to count the number of qualityTags for a given user and to track what quality evaluation a user has given to another user, we need to implement QualityTags not as a ManyToMany field, but as a list of requests.
  • Migrate Profile's QualityTags to QualityTagRequest, to deal with the separately.
  • Implement SkillTags & QualityTags related REST APIs and test them.

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Home Page

Detail

  • Create layout for canvas and friendlistsidebar
  • Add resize event listener to homepage to resize canvas when window is resized

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Create Profile

Detail

  • Implement create profile page for new users
  • Upload profile image feature
  • Add pre-provided tags
  • Other inputs like majors, websites, intro, etc.

Checklist

  • Design
  • Implementation (UPD:11/09)
  • Testing
    • Unit Test

[TASK] Get Friend

Detail

  • Implement backend REST APIs that get list of one-chon and two-chon for a given user
  • This API will be used in the graph visualization process in the frontend.

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Remove Friend

Detail

  • Implement API to remove a onechon (a.k.a. disconnect the connection) of a given user.
  • When removing a onechon, be aware to also disconnect the corresponding two-chons, and update read/write permissions.
  • To implement this, FriendRequest of two users will be changed to "Rejected" status.

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[Task] Initialize Fake sqllite3 db

Detail

  • Implement automated code or synthetic data to initialize an empty sqllite3 db.
  • This functionality is crucial for backend & frontend integration, and testing with the same stubs on different local machines.

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Get, Edit My Profile

Detail

  • GET, PUT APIs of /api/profile/, which does GET and PUT of my profile.

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Graph Visualization

Detail

  • Design and implement the graph which displays 1-chons and 2-chons usin Canvas
  • Make a test code for the graph using canvas test tools

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Verify Email

Detail

  • Implement frontend page for verifying email for a user.
  • Implement email verification APIs.

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Evaluate Quality Page

Detail

  • Render a basic input page that searches through the pre-provided tags and updates the tags upon submit

Checklist

  • Design (UPD: 11/15)
  • Implementation (UPD: 11/15)
  • Testing (UPD: 11/15)
    • Unit Test

[TASK] Sign In (with friendRequestToken)

Detail

  • Create redux slice for managing friend request token
  • Add query detection in HomePage.tsx
  • Add requests for checking the owner of the friend request token

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Forgot Account

Detail

  • Create page for forgot account type (Forgot email or Forgot password)
  • Create redux thunk actions for calling forgot email or forgot password apis
  • Create gmail SMTP auth tokens
  • Implement function for sending email in the backend when forgot password api is called
  • Create change password page for users who are already logged in
  • Create change password page for users who forgot their account and attempts to change password through change password url

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Sign Up

Detail

  • Design and implement Sign Up Page view.
  • Make a test code for the view.

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Create Profile

Detail

  • Implement create profile REST API
  • Provide tests

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Navigation Bar

Detail

  • Add icons for navigation bar
  • Open popup when friend request notification icon is clicked
  • Open search popup when search button is clicked

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Signup & Send Email

Detail

  • Implement signup & sending email to username

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] View another user's profile

Detail

  • GET /api/profile/:user_id/
  • Get profile of another user, if the current user has read permission (is onechon or twochon)

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

[TASK] Send / Receive Friend Request

Detail

  • Implement backend REST APIs to support sending and receiving FriendRequests.
  • This will be implemented by FriendRequest "Pending", "Accepted", "Rejected" status.
  • When sending / receiving is going on, always make sure 1. max one-chon invariant 2. read/write permission update is correctly handled.

Checklist

  • Design
  • Implementation
  • Testing
    • Unit Test

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.