code-mentoring / learn Goto Github PK
View Code? Open in Web Editor NEWLearn to Code - Project CM
Home Page: https://learn.codementoring.co
License: The Unlicense
Learn to Code - Project CM
Home Page: https://learn.codementoring.co
License: The Unlicense
Is your feature request related to a problem? Please describe.
As a developer on PCM, I want to run tests without the seeing the error printed from logs when testing negative flows
Describe the solution you'd like
Silence the logs for any test class
Describe alternatives you've considered
Currently logs are printing when running tests
Additional context
As a user that wants to learn progressively down a path, I want to to learn concepts within a module.
We should build the Concept
database entity so that the user can learn concepts of that module.
Concept
entity in the databaseid
: UUIDname
: stringicon
: stringdescription
: stringtaughtIn
: reference to a Module
entity (foreign key contraint)Is your feature request related to a problem? Please describe.
As a user, I want to signup to a path (like a language in Duolingo). This path should progress me from entry level lessons to advanced lessons of increasing difficulty as I progress.
Describe the solution you'd like
Path
entity in the API that has a many to many relationship to User
Path
should have:
name
Name of the path (EG: Javascript, HTML, etc)icon
Link to icon of the pathdescription
Short paragraph explaining the Pathmodules
All Module
(Not completed) entities that belong to the pathWe should build the Friends
database entity so that the user can connect with other users to become friends in the platform.
Module
entity in the databaseid
: UUIDuserId1
: UUIDuserId2
: UUIDsince
: dateDescribe the bug
Running the project on windows is currently impossible due to environment variables being hardcoded into npm scripts.
To Reproduce
On windows, run yarn build
Expected behavior
Should build correctly on windows using somthing like cross-env
Desktop (please complete the following information):
Is your feature request related to a problem? Please describe.
As a contributor to Project CM, I want to read through a readme and wiki article to understand how to run and use the ui
package.
Describe the solution you'd like
packages/ui
that links to the wiki and has some general information for the package.Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
Is your feature request related to a problem? Please describe.
As a developer of PCM, I want to see all the files, classes, methods, functions etc that I have not tested.
Describe the solution you'd like
In the API, we should integrate coverage reporting with codecov automatically in the CI. PR check should fail if the coverage is reduced, ensuring that PRs add tests for new things.
Describe alternatives you've considered
Currently we're just testing which is great, but we have no way of knowing what has been tested.
Describe the bug
During the build process client package will generate an error preventing the build.
To Reproduce
Steps to reproduce the behavior:
yarn run build
Expected behavior
Build smoothly without error
Desktop (please complete the following information):
Is your feature request related to a problem? Please describe.
As a contributor to PCM, I want to run a command to populate my database with dummy data without having to think about it.
Describe the solution you'd like
There should be a seed script in API that populates all entities with mock data. As new entities are added, the seed script should be updated to include it.
Additional context
yarn seed
in api
projectAs a user, I want to easily adjust a number value
We should build a slider ui component so that range values can be visually identified.
Check these off as they are completed:
<Slider />
element is exposed in the ui
packageonChange
property to notify if value changesmin
property as numbermax
property as numbersteps
property as number to determine distance between valuesIs your feature request related to a problem? Please describe.
As a user, I want to see an easy to use list of items that clearly outline what option I have selected
Describe the solution you'd like
We should have a RadioList component (like a radio group, just styled differently) in the ui
project.
ui
packageoptions
with name
, label
, and an optional subLabel
(small text on the right)onChange
prop to allow for listening for changesAdditional context
Designs: https://www.figma.com/file/4iRXVSBcfJ7WQxYSZNc2FO/Components?node-id=40%3A0
As a front end developer that creates UI components and client interface, I want to be able to have the right colors available at the tailwind config file
.
We should update the colors of the tailwind config file so that we can see the right results when comparing with the Figma project.
Check these off as they are completed:
Add user profile to seeder
As a learner that subscribed to a path, I want to view all the lessons and assignments on the path sorted chronologically like Duolingo
We should build a small component that takes an icon and label so that the user can click on one to go to the lesson/assignment.
Check these off as they are completed:
PathModule
component in client
componentslesson
prop of the Lesson
type from the APIstate
of values completed
, locked
or open
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Update CONTRIBUTING.md with conventions for:
Describe alternatives you've considered
n/a
Additional context
n/a
Describe the bug
Added "seeders" to comment in DANGEROUSLY_RESET_DATABASE fn
Is your feature request related to a problem? Please describe.
Currently there is no CI to check PRs and new commits.
Describe the solution you'd like
Using Github actions, we should have an automated check that tests the API and front end, linting, seeding, etc for any new PR or commit
Describe alternatives you've considered
Travis could also work, but github actions seems to be the best solution considering our tasks are all here
Is your feature request related to a problem? Please describe.
As someone new to the platform, I want to tell the platform about myself (why I'm here, my skill level, etc)
Describe the solution you'd like
There should be an API graphql query updatePreferences
that allow the user to configure:
Additional context
As a user, I want to log in and know who I am signed in as. I want the app to show my name, etc.
Client should have a way of identifying who the current user is via a query { me {...} }
GQL query
Query should take no parameters, and just return the current user based on the JWT supplied
As a social person that wants to find my friends on CM, I want to search via a name or email for people I know
We should build a searchUsers
query so that users can search for other users (to eventually add them as a friend.
searchUsers
queryUser
entities on the resultsearchUsers
query ($search: String!) {
searchUsers(search: $search) {
id
firstName
lastName
# ...
}
}
Is your feature request related to a problem? Please describe.
As a regular user of PCM, I want to save my preferences.
Describe the solution you'd like
There should be a DB model for User preferences (One to One relationship) with properties:
userId
(UUID)practiceGoal
(Number 1-4)why
(Text field of why they are here)The UserService
should be appended to include:
updatePreferences
method to set the user's preferences.Additional context
updatePreferences
mutationIs your feature request related to a problem? Please describe.
As a contributer to Project CM, I want to see an organised repository of information regarding how I can help, and how the project works.
Describe the solution you'd like
We currently have some basic documentation in the README.md file. This should be moved over to a better system like Github Wiki
Describe alternatives you've considered
We can stick with README.md for now, but it will get too big pretty quickly.
As a user, I want to take a lesson which is going to be inside a path (like lessons in freecodecamp.org). Once I start doing this lesson and complete it. It should be marked as done, so that I can continue my progress to the next lesson.
Describe the solution you'd like
An Lesson
entity in the API that have relation with the User_Path table so that I can keep track of the user's progress inside the path.
Describe alternatives you've considered
Possible columns inside the Lesson
entity:
Questions
--That are the content or challenges that the user have to complete
Score(%)
--The amount of challenges the user have done
Additional context
e.g.: LIke the lessons in freecodecamp. The completed mark ( โ ) and the progress (10/21) showed in this screenshot
Blocked by
Is your feature request related to a problem? Please describe.
As someone who just signed up to CM, I want a nice introduction to the platform when I first sign in.
Describe the solution you'd like
We should replicate our welcoming process that we do for physical events online. Our famous, "So, why are you here?" should carry across to the platform to make new users feel welcome.
There should be a small wizard when a user first logs in that asks:
Additional context
This should be designed and put into the PCM - App in Figma
Describe the bug
A recent merge of #60 creates invalid users. It's creating data using the repository directly not using the UserService.create. All data created should be created using services, as we don't know what extra stuff happens in them. Direct data entry should be discouraged unless it's inside a service itself.
To Reproduce
Steps to reproduce the behavior:
cd packages/api
yarn seed
Expected behavior
User password should be hashed from generated users
Is your feature request related to a problem? Please describe.
Staging environment needed for:
master
branchDescribe the solution you'd like
develop
branch.API
Describe the bug
After running...
yarn start-db
Docker Dashboard will generate this error preventing postgres to finish.
db_1 | 2020-05-01 01:45:08.789 UTC [82] FATAL: data directory "/var/lib/postgresql/data" has wrong ownership
db_1 | 2020-05-01 01:45:08.789 UTC [82] HINT: The server must be started by the user that owns the data directory.
db_1 | running bootstrap script ...
learn_db_1 exited with code 1
To Reproduce
Pull from branch develop
Run yarn start-db in project root.
Expected behavior
Docker will notify you that the database system is ready to accept connect.
Desktop (please complete the following information):
Is your feature request related to a problem? Please describe.
As someone learning how to code, I want to see how far I am generally across the languages/technologies I know.
Describe the solution you'd like
There should be a widget on the dashboard that displays all paths and the progress the user is through them.
Additional context
May want to use a canvas to draw the arc.
https://www.figma.com/file/MfOc0a8Ac9Zoh9RppoEuiD/CM-UI?node-id=2%3A0
Data
This will need dummy data for now. It should follow the format of:
interface PathProgress {
path: Path // Still being worked on by @raysercast1
progress: number; // 0 - 1
}
// Dummy interface until it's available from #5
interface Path {
id: string;
name: string;
icon: string;
description: string;
}
<ProgressWidget /> // fetches its own data (mocked for now)
We should build the Module
database entity so that the user can complete lessons and assignments.
Module
entity in the databaseid
: UUIDname
: stringicon
: stringpathId
: reference to a Path
entity (foreign key contraint)type
: "lesson"
OR "assignment"
previous
: NULLABLE - reference to another module
using ID (foreign key constraint)We need a CI task to publish packages (specifically the ui
package) so it can be used in other projects like www
Is your feature request related to a problem? Please describe.
As a contributor to Project CM, I want to read through a readme and wiki article to understand how to run and use the client
front-end package.
Describe the solution you'd like
packages/client
that links to the wiki and has some general information for the package.Is your feature request related to a problem? Please describe.
As a contributor to Project CM, I want to read through a readme and wiki article to understand how to run and use the api
package.
Describe the solution you'd like
packages/api
that links to the wiki and has some general information for the package.As a PCM contributor, I want to have some test users with userPreferences filled. This will help to test cases like onboarding workflow, update user...
When seeding users, it should seed user preferences using userPreferences service
Is your feature request related to a problem? Please describe.
As an avid learner, I want to signup to new paths and languages as I progress.
Describe the solution you'd like
There should be a modal where a user can signup to more Paths.
ui
client
query paths {}
in api
Additional context
<Modal />
entity in ui
Is your feature request related to a problem? Please describe.
As a developer of this project, I want to know if the code I wrote broke anything anywhere in the API.
Describe the solution you'd like
Using Jest, to have automated testing on the API setup in Travis CI. It should test all the queries and mutations in the API.
As a new user that just signed up, I want to be greeted to the platform to orientate myself
We should build an onboarding experience for new users so that they feel welcomed to the platform and have set some initial goals.
updatePreferences
(#79)LINK TO FIGMA PRESENTATION
LINK TO FIGMA DESIGN
Is your feature request related to a problem? Please describe.
As a developer on PCM, I want to run tests easily without setting up a database
Describe the solution you'd like
We should have the option of a in memory, sqlite database that is used in tests.
Describe alternatives you've considered
Currently we just use normal connection
Additional context
https://gist.github.com/Ciantic/be6a8b8ca27ee15e2223f642b5e01549
Is your feature request related to a problem? Please describe.
As a developer of PCM, I want an easy way to connect to a database that doesn't involve configuring a database
Describe the solution you'd like
We should have a docker compose file that spins up a local database easily.
Describe alternatives you've considered
Currently we are enforcing that everyone sets up their own database, and is a learning curve for people to get onto the platform.
Additional context
Docker will be a pre-requirement for this
Describe the bug
UserService is imported twice
Is your feature request related to a problem? Please describe.
As a peer learner, I want to see other people I know and how they're progressing to see how I compare. Fun competition amongst friends.
Describe the solution you'd like
There should be a widget on the dashboard that shows a list of users ranked by their score.
Additional context
Relies on:
We should build the Assignment
database entity so that the user can do lessons an assignment.
Assignment
entity in the databaseid
: UUIDmoduleId
: UUIDdescription
: stringIs your feature request related to a problem? Please describe.
As a user I want to navigate across the app easily and see relevant information about my progress in the app.
Describe the solution you'd like
A header component needs to be built for the UI. It should follow the designs given in the Figma document
Additional context
Figma designs: https://www.figma.com/file/MfOc0a8Ac9Zoh9RppoEuiD/CM-UI?node-id=0%3A1&viewport=550%2C371%2C0.47890499234199524
Relies on:
Is your feature request related to a problem? Please describe.
As a user, I want to put names to faces for all other people in the app.
Describe the solution you'd like
User profile images should be pulled in from gravatar and provided as a new attribute for the User entity.
Describe alternatives you've considered
We could also do uploading of pictures, however that would be more complex and we'd have to store them somewhere.
Additional context
Gravatar is a service that aims to be the users icon for all the internet. Services and apps around the internet use it instead of rolling their own profile image system.
As a signed-in user that wants to sign out, I want to be able to click on a button to sign out.
Build a sign-out mutation that clears the accessToken
from the LoginOutput
Type and return a message saying:
You have signed out!
signOut
querysignOut
query {
signOut # Returns a boolean
}
Is your feature request related to a problem? Please describe.
As a competitive learner, I want to see how I am comparing to other learners.
Describe the solution you'd like
Users compete to be ranked by highest scores in the Leaderboard
(see #26 ).
Score is based on:
Additional context
Is your feature request related to a problem? Please describe.
So we can maintain consistency of code quality, we should use TSLint across our project.
Describe the solution you'd like
The lint command should be run on CI so all PRs need to pass the lint check before they can be merged.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.