EtienneDx / git-mentor

A git server with built-in tools for teaching programming
MIT License
2 stars 0 forks source link

Create basic interface #11

Open EtienneDx opened 11 months ago

EtienneDx commented 11 months ago

Create the base interface. Overall, the basic of a git repository project should be available: searching for a public repo, getting logged in, when logged in seeing the latest repos, accessing all personal repos, seeing the user assignments and groups (classrooms).

Overall this list is very much lacking. The idea of this task is to create a basic interface upon which we can build the app later on. For the different features requiring back-end data, tasks should be created in GitHub.

This is very opened and welcoming suggestions.

Lerri-Cofannos commented 11 months ago

Routing tree

. '/' (HomePage) ├── login (Authentication) ├── settings (UserSettings) ├── groups (GroupsList) │ ├── create (GroupCreator) │ ├── student/[id] (GroupStudents) │ └── assignements/[id] (GroupAssignements) ├── students (AllStudents) │ └── create (StudentCreator) └── repositories (RepositoriesList) ├── create (RepositoryCreator) └── [id] (RepositoryCode) ├── commits (RepositoryCommits) ├── settings (RepositorySettings) ├── discussion (RepositoryDiscussion) └── diffs (RepositoryDiffs)

Plan for creating the pages

route Name Description Sprint
/ HomePage User landing page with recaps User
/login Authentication Sign up page User
/settings UserSettings User settings interface User
/groups GroupsList List of my groups DataViz
/groups/create GroupCreator Creator for a group instance DataCreate
/groups/student/[id] GroupStudents List of the students of a group DataViz
/groups/assignements/[id] GroupAssignements List of the assignements of a group DataViz
/students StudentsList List of all students DataViz
/students/create StudentCreator Creator for a student instance DataCreate
/repositories RepositoriesList List of my repositories DataViz
/repositories/[id] RepositoryCode Repository's code RepoViz
/repositories/[id]/commits RepositoryCommits Repository's commits RepoViz
/repositories/[id]/settings RepositorySettings Repository's settings RepoPlus
/repositories/[id]/discussion RepositoryDiscussion Repository's discussion (only for stud) RepoPlus
/repositories/[id]/diffs RepositoryDiffs Repository's diffs (only for stud) RepoPlus
/repositories/create RepositoryCreator Creator for a repository instance DataCreate

Sprint priority

  1. DataViz: display the tables and navigate inside the database
  2. User: create a friendly welcome experience for users
  3. DataCreate: enable the creation of data instances
  4. RepoViz: enable the interactions with a repository
  5. RepoPlus: unlock more advanced features for repositories
EtienneDx commented 11 months ago

Looks good, although I think we should have something more github like for the repositories. Something like

It's a bit more to manage but overall will provide an easier way to keep track of what's what I think

Lerri-Cofannos commented 11 months ago

Here is another suggestion, to take this element into account. I also added new pages for the assignements, as I believe that with the previous solution there was no access point to student repositories.

Page Routing

route Name Description Sprint
/ Authentication Login page Auth
/[userId] UserOverview User landing page with recaps DataViz2
/[userId]/settings UserSettings User settings interface Settings
/[userId]/groups UserGroupsList List of my groups DataViz1
/[userId]/assignements UserAssignementsList List of the assignements of my groups DataViz2
/[userId]/students UserStudentsList List of the students of my groups DataViz2
/[userId]/repositories RepositoriesList List of my repositories DataViz1
/[userId]/repositories/create RepositoryCreator Creator for a repository instance DataCreate
/[userId]/[reponame] RepositoryCode Repository's code RepoViz
/[userId]/[reponame]/commits RepositoryCommits Repository's commits RepoViz
/[userId]/[reponame]/settings RepositorySettings Repository's settings Settings
/[userId]/[reponame]/discussion RepositoryDiscussion Repository's discussion (only for stud) Discussion
/[userId]/[reponame]/diffs RepositoryDiffs Repository's diffs (only for stud) RepoViz
/groups GroupsList List of all of the groups DataViz2
/groups/create GroupCreator Creator for a group instance DataCreate
/groups/settings GroupSettings Group settings interface Settings
/groups/[groupId]/student GroupStudents List of the students of a group DataViz1
/groups/[groupId]/assignements GroupAssignements List of the assignements of a group DataViz1
/assignements/create AssignementCreator Creator for an assignement instance DataCreate
/assignements/[assId] AssignementRepos List of the repos of an assignement DataViz1
/assignements/[assId]/settings AssignementSettings Assignement settings interface Settings
/assignements/[assId]/discussion AssignementDiscussion Overview of an assignement with a chat Discussion
/students StudentsList List of all students DataViz1
/students/create StudentCreator Creator for a student instance DataCreate

Sprint priority

  1. DataViz1: display the first tables and navigate inside the database (6 pages)
  2. Auth: Manage authentication (1 page)
  3. DataCreate: enable the creation of data instances (4 pages)
  4. RepoViz: enable the interactions with a repository (3 pages)
  5. Settings: Manage various settings (4 page)
  6. DataViz2: Advanced data visualization (4 pages)
  7. Discussion: Enable user discussions (2 page)
EtienneDx commented 11 months ago

Looks good, just one thing on /[userid]/students, I don't think it quite make sense as a student might be part of multiple groups