Coder Social home page Coder Social logo

edu-change's People

Contributors

alanpq avatar caelumf avatar ericm avatar m-ayushi avatar matthatter20 avatar v-pan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

ericm

edu-change's Issues

Implement issue submission

A form to submit issues.

Frontend (design on Trello):

  • Input boxes for:
    • Issue title
    • Description of issue
    • Resolution criteria
      • Severity
      • Category

Backend

  • Integrate into current Firestore implementation

Fails initial build, works on rebuild

git clone https://github.com/CaelumF/edu-change/issues/new
cd edu-change
npm install
npm start

> [email protected] start /home/caelum/IdeaProjects/edu-change
> ng serve

** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
                                                                                          
Date: 2019-01-28T11:31:22.177Z
Hash: 096b32da47e6c4980d1e
Time: 29413ms
chunk {main} main.js, main.js.map (main) 1.93 kB [initial] [rendered]
chunk {polyfills} polyfills.js, polyfills.js.map (polyfills) 682 bytes [initial] [rendered]
chunk {runtime} runtime.js, runtime.js.map (runtime) 5.22 kB [entry] [rendered]
chunk {styles} styles.js, styles.js.map (styles) 147 kB [initial] [rendered]
chunk {vendor} vendor.js, vendor.js.map (vendor) 329 kB [initial] [rendered]

ERROR in node_modules/@angular/flex-layout/core/typings/match-media/mock/mock-match-media.d.ts(25,15): error TS2416: Property '_registry' in type 'MockMatchMedia' is not assignable to the same property in base type 'MatchMedia'.
  Type 'Map<string, MockMediaQueryList>' is not assignable to type 'Map<string, MediaQueryList>'.
    Type 'MockMediaQueryList' is not assignable to type 'MediaQueryList'.
      Types of property 'removeListener' are incompatible.
        Type '(_: EventListenerOrEventListenerObject) => void' is not assignable to type '(listener: MediaQueryListListener) => void'.
          Types of parameters '_' and 'listener' are incompatible.
            Type 'MediaQueryListListener' is not assignable to type 'EventListenerOrEventListenerObject'.
              Type 'MediaQueryListListener' is not assignable to type 'EventListenerObject'.
                Property 'handleEvent' is missing in type 'MediaQueryListListener'.
node_modules/@angular/flex-layout/core/typings/match-media/mock/mock-match-media.d.ts(82,5): error TS2416: Property 'removeListener' in type 'MockMediaQueryList' is not assignable to the same property in base type 'MediaQueryList'.
  Type '(_: EventListenerOrEventListenerObject) => void' is not assignable to type '(listener: MediaQueryListListener) => void'.
    Types of parameters '_' and 'listener' are incompatible.
      Type 'MediaQueryListListener' is not assignable to type 'EventListenerOrEventListenerObject'.
        Type 'MediaQueryListListener' is not assignable to type 'EventListenerObject'.
node_modules/@angular/flex-layout/core/typings/match-media/mock/mock-match-media.d.ts(83,38): error TS2304: Cannot find name 'MediaQueryListEventMap'.
node_modules/@angular/flex-layout/core/typings/match-media/mock/mock-match-media.d.ts(83,99): error TS2304: Cannot find name 'MediaQueryListEventMap'.
node_modules/@angular/flex-layout/core/typings/match-media/mock/mock-match-media.d.ts(84,41): error TS2304: Cannot find name 'MediaQueryListEventMap'.
node_modules/@angular/flex-layout/core/typings/match-media/mock/mock-match-media.d.ts(84,102): error TS2304: Cannot find name 'MediaQueryListEventMap'.
node_modules/@angular/flex-layout/core/typings/match-media/mock/mock-match-media.d.ts(95,67): error TS2304: Cannot find name 'MediaQueryListEvent'.
node_modules/@angular/flex-layout/core/typings/match-media/server-match-media.d.ts(30,5): error TS2416: Property 'removeListener' in type 'ServerMediaQueryList' is not assignable to the same property in base type 'MediaQueryList'.
  Type '(_: EventListenerOrEventListenerObject) => void' is not assignable to type '(listener: MediaQueryListListener) => void'.
    Types of parameters '_' and 'listener' are incompatible.
      Type 'MediaQueryListListener' is not assignable to type 'EventListenerOrEventListenerObject'.
        Type 'MediaQueryListListener' is not assignable to type 'EventListenerObject'.
node_modules/@angular/flex-layout/core/typings/match-media/server-match-media.d.ts(31,38): error TS2304: Cannot find name 'MediaQueryListEventMap'.
node_modules/@angular/flex-layout/core/typings/match-media/server-match-media.d.ts(31,99): error TS2304: Cannot find name 'MediaQueryListEventMap'.
node_modules/@angular/flex-layout/core/typings/match-media/server-match-media.d.ts(32,41): error TS2304: Cannot find name 'MediaQueryListEventMap'.
node_modules/@angular/flex-layout/core/typings/match-media/server-match-media.d.ts(32,102): error TS2304: Cannot find name 'MediaQueryListEventMap'.
node_modules/@angular/flex-layout/core/typings/match-media/server-match-media.d.ts(46,15): error TS2416: Property '_registry' in type 'ServerMatchMedia' is not assignable to the same property in base type 'MatchMedia'.
  Type 'Map<string, ServerMediaQueryList>' is not assignable to type 'Map<string, MediaQueryList>'.
    Type 'ServerMediaQueryList' is not assignable to type 'MediaQueryList'.
      Types of property 'removeListener' are incompatible.
        Type '(_: EventListenerOrEventListenerObject) => void' is not assignable to type '(listener: MediaQueryListListener) => void'.
          Types of parameters '_' and 'listener' are incompatible.
            Type 'MediaQueryListListener' is not assignable to type 'EventListenerOrEventListenerObject'.
              Type 'MediaQueryListListener' is not assignable to type 'EventListenerObject'.
node_modules/@angular/flex-layout/core/typings/match-media/server-match-media.d.ts(58,15): error TS2416: Property '_buildMQL' in type 'ServerMatchMedia' is not assignable to the same property in base type 'MatchMedia'.
  Type '(query: string) => ServerMediaQueryList' is not assignable to type '(query: string) => MediaQueryList'.
    Type 'ServerMediaQueryList' is not assignable to type 'MediaQueryList'.
node_modules/@angular/flex-layout/core/typings/match-media/server-match-media.d.ts(60,67): error TS2304: Cannot find name 'MediaQueryListEvent'.

ℹ 「wdm」: Failed to compile.

This also happens every time npm start is ran after initial installation.

Solve critera:

  • Works on initial build

Account registration

Students and academic staff members must be able to register (currently using Firestore Auth). The emails given in registration will be used to determine & verify their attendance / employment at a university.
This requires at least:

Login form (Students)

  • First name (optional?)
  • Last name (optional?)
  • Username
  • Student email
  • Password
  • The student email must be verifiable

Login form (Staff members)

  • First name
  • Last name
  • Username
  • Staff email
  • Password
  • The staff email must be verifiable

404 Component

  • Make component with ng generate component

  • Make it hella nice

  • Have unrouted pages lead to it by default

Post editing

Registered users should be able to edit their posts. This could be done through a generic post editing component, which would have fields for:

  • Title
  • Description / Content

or it could be done with unique edit pages for each type of post.

Ideally there would be a public viewable edit history, or at least a marker to flag that a post has been edited. For authentication, Firebase could be used to compare the UID of the poster to the UID of the request to edit.

Visual bug with logo icon

Clicking on the logo will select it, and will only remove that selection when you click on another interactive object (eg. buttons)
image

Implement Issue component to design standard

Issue:

Component:

  • Issue title
  • Author ( + Reputation)
  • Institute
  • ID
  • Description
  • Response (Author, Adequacy, Show others)
  • Comments (Author, Rep, Institute, Comment, etc.)
    has input support for a future form
    using flex-layout

Todo:

  • Fix IssueService to pipe issue through getIssue method
  • Assign component properties from issue$ observable stream
  • Update component properties after change
  • Render multiple components

Resolution:

Service:

Provides Issue component with the issue to render
Updates ratings of Resolution components

  • *ngIf checks for a resolution (can be changed to modify CSS rules and completely remove the section instead)
  • Title
  • Author
  • Description
  • Adequate/Inadequate buttons
  • Show others
  • Have "show others" redirect to another page

Comment:

  • Author
  • Comment
  • Read rating
  • Update rating

Challenge:

  • Challenge
  • Rating
  • Discussion section

Improve issue loading performance

Currently, issues are queried in their entirety and then iterated over by id to find a specific issue by id
With many issues, this will be a major slow down

  • Modify Issue.service.ts to query only issues by id and allow finding it to be handled by firebase server

  • Once fixed does anything rely on the old behaviour? change if so

Create more issues

As an exercise, each of us should try creating an issue.

Start by looking at we've defined as what we want, and creating steps to reach that.

Hide Firebase secrets before publicising repo

Making the repository public exposes any secrets in files.

Currently, firestore's apiKey is stored in src/environments/environment.ts

Solve criteria

  • Load apiKey from external .gitignore'd file

  • Remove apiKey from history of src/environments/environment.ts

Technically, the apiKey can be extracted from the running website itself with a lot of effort. However, currently, Firestore is in permissive/debugging mode with no permissions, so web-scrapers should be isolated from the key or else all hell could break loose.

Change project name to be Fixiversity

Story Summary

As a development team member I want to change the app name from edu-change to be our new app name - Fixiversity so that all users and team members can see our cool new app name

Background

The name of edu-change is not unique and so we come up with Fixivisity.

ToDo

  • Tests
  • Is the performance acceptable?
  • Manual Testing
  • Code Reviewed

Acceptance Criteria

  • All edu-change changed to be Fixiversity
  • Take care of both code base and UI

Definition of Done

All code delivered and managed in GIT
Code is globalization ready - strings externalized
Code meets accessibility standards
Project management notified of any 3rd party/open source updates
Impact on other services is understood and impacted teams engaged 

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.