citizenos / citizenos-fe-old Goto Github PK
View Code? Open in Web Editor NEWCitizen OS front-end web application - https://app.citizenos.com/
License: Other
Citizen OS front-end web application - https://app.citizenos.com/
License: Other
Overview
When custom styling is used for Citizen OS (https://github.com/citizenos/citizenos-fe/blob/master/public/config/README.md), there is no glue in the UI that Citizen OS OSS is used.
TODO
Overview
In order to add extra level of protection against XSS and packet sniffing attacks we should implement Content Security Policy (CSP) - https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
TODO
<meta>
tags OR headers, which ever makes sense (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy). I think for us headers make more sense and are easier to implement.The need
When I deploy a CitizenOS instance for my own organization, I would like to have possibility to have my own branding so that Users feel more at home as well as can distinct between different CitizenOS's they may be using
Scope
Problem
When a topic becomes hot in society, it is likely, that multiple people will want to create a public topic in Citizen OS about it. However, it makes more sense, if they all contribute to the same public topic, instead of creating double entries.
Why is this a problem?
It may not be, however, in an ideal world, people's efforts would be pooled to achieve a diverse discussion and the best possible decision.
Possible solution
When you start entering a topic title, compare the words to other topic titles and if the per centage of similarity exceeds a certain threshold, display possible existing topic(s) about the same problem.
Overview
Citizen OS helps out some organizations to get their discussions more traction on the Home page. These include Keep It Clean Plan, 10 island project, Eesti Jazzi Arengusuunad tiles and custom categories on the Home page.
These are all fine on https://app.citizenos.com site, but should not affect other installions.
TODO:
features.showPromotionTiles
. Default: false
.features.showTutorialTile
. Default: true
.There is a blank space in topic info section when user tries to open topics vote results tab, in my topics view by adding &openTabs=vote_results
to the end of URL, without permissions. While this tab is hidden by adding param to URL, script tries to load vote results from vote resource that is not existing.
What is the problem?
Social media sharing results in a suboptimal share experience (see screenshot). Only info about our platform is displayed, not information about the actual shared content.
Why is this a problem?
Because few people are in the habit of regularly visiting our main page, but many people regularly engage with social media. So we should give much more visibility to our users' content.
Possible solution
When sharing, the preview includes at least the title and possibly first lines of the content of the topic.
Problem
The problem is that there is no IE Edge support for ESTID.
What giants do?
What we do?
TODO
Reproduce
/my/topics/:topicId
Result
TODO
When user filters his/hers topics/groups in dashboard, if no results are returned, whole content are is covered by a message You have not participated in a topic yet. Try it, it’s really cool!
and link to create a topic is displayed. There should probably be separate loading of topic with id in URL and topics in the list
Overview
Add a possibility to send out reminders to Topic members about the vote to increase vote participation.
TODO
Background
We're using old Google logo and customized layout.
Google does not like it. They have automated mechanisms for checking for violations and will report them to the owner.
Not sure if ignoring it would do any harm.
All and all it's best for the user that Google Sign-in looks the same on different platforms including Citizen OS
TODO
When a topic is closed, an activity should be shown in AF to reflect that. Currently, nothing happens.
index.js
requires Lodash, yet it is not a dependency in package.json
. Running node index.js
therefore crashes immediately with Error: Cannot find module 'lodash'
.
Overview
When creating a new custom vote for a Topic and entering invalid data (>100 chars etc) into vote option fields there are no error messages.
NOTES:
TODO:
Overview
@import
generates duplicate code in the CSS bundle.References
TODO
@import
Overview
In User profile, you cannot change any info without entering a password.
The problem is that not everyone has a password - Google, FB authentication.
TODO
Etherpad HTML export has escaped letters in title ä -> ä
Overview
There is no changes visible when scrolling in the timeline view of https://app.citizenos.com/en/topics/7abdd244-d45b-40d3-997c-a6290d4e972c
Tho its Etherpad issue, it's this projects task to find out what the issue is.
TODO
Problem: web app help texts right now are a separate topic in the Citizen OS system. This makes them non-translatable using CrowdIn and they do not move with the system, when a partner installs a separate instance.
Why is this a problem: changes to help texts cannot be tracked over different languages and they become out of sync. Partners who install an instance can have altogether missing help texts. Languages used in the app may not have help in corresponding languages. In all cases, user is left without adequate support.
Possible solution: move help text from topic content to a separate sub-page within the app. Then it a) moves with the app and b) goes into CrowdIn and becomes translatable.
When voting has a deadline and the deadline is expired, a user who navigates to voting tab does not understand, what the status is, because:
Why is this a problem: as evidenced by the image, situation right now is very confusing. All signs indicate, that voting should be ongoing, yet a vote cannot be cast. Most frustrating for the user.
Possible solution: relabel the date in the top right corner correctly and once expired, make it red and well visible. Also, possibly say "voting deadline expired" in red on top of the voting results.
Problem: when opening a topic that is in voting or in follow-up, the system nevertheless displays "View" tab first. It does display a notification for the relevant status, for instance: "This topic is being voted on, editing is no longer possible!"
Why is this a problem: it requires the user to look for the tabs and make an extra click
Possible solution: open the most current tab first. Then, if the user navigates away from that to the "View" tab, display the notification.
Human readable slug support needed in API because:
Emails need to have urls with slugs
API will still use the system ID, but way may need to move to BIGINT id-s from UUID because the "slug+ID" would look really long and awkward.
Related tasks:
Overview
Please create page for LDI Indonesia which is similar to the Keep It Clean Plan https://app.citizenos.com/et/keepitcleanplan
TODO
Please add LDI Indonesia box on the Home page.
Users should be able to choose the category "10 island project"
There is a blank space in topic info section when user tries to open topics vote results tab, in my topics view by adding &openTabs=vote_results
to the end of URL, without permissions. While this tab is hidden by adding param to URL, script tries to load vote results from vote resource that is not existing.
Solution:
Overview
No localisation for /about
page - https://app.citizenos.com/ru/about
TODO
/about
page./about
route should redirect to the configured link.Overview
When entering Topic edit mode in iOS, Etherpad shows "no cookies" error, that is if cookie settings are "Allow cookies from websites I visit" which seems to be iOS default.
TODO
Overview
Not too often, 1but sometimes POST /topics/:topicId/votes/:voteId/sign
fails with following error:
1 Feb 2017 18:31:03.708 345 <158>1 2017-02-01T16:31:02.718770+00:00 host heroku router - at=info method=POST path="/api/topics/dbe5cd08-afe1-47fd-aac6-6abb8e1f24ea/votes/aab3b420-e26d-45f4-8dcf-a91b30ae6572/sign" host=citizenos.com request_id=f4805703-14ba-4550-a8d0-ded209f00522 fwd="x" dyno=web.1 connect=0ms service=356ms status=500 bytes=339
» 1 Feb 2017 18:31:03.748 182 <190>1 2017-02-01T16:31:02.711638+00:00 host app web.1 - �[32m[2017-02-01 16:31:02.711] [INFO] production - �[39mDB QUERY. Executed (310262e6-bb8f-49cc-80eb-5ba4b0c16656): ROLLBACK;
» 1 Feb 2017 18:31:03.825 253 <190>1 2017-02-01T16:31:02.714732+00:00 host app web.1 - �[32m[2017-02-01 16:31:02.714] [INFO] production - �[39mSequelize error handler middleware activated. { [Error: No digidoc in session] name: 'Error', message: 'No digidoc in session', code: 101 }
» 1 Feb 2017 18:31:03.825 63 <190>1 2017-02-01T16:31:02.714735+00:00 host app web.1 - Error
» 1 Feb 2017 18:31:03.825 114 <190>1 2017-02-01T16:31:02.714736+00:00 host app web.1 - at Object.<anonymous> (/app/libs/ddsClient.js:51:44)
» 1 Feb 2017 18:31:03.825 99 <190>1 2017-02-01T16:31:02.714737+00:00 host app web.1 - at Module._compile (module.js:409:26)
» 1 Feb 2017 18:31:03.825 113 <190>1 2017-02-01T16:31:02.714737+00:00 host app web.1 - at Object.Module._extensions..js (module.js:416:10)
» 1 Feb 2017 18:31:03.825 95 <190>1 2017-02-01T16:31:02.714738+00:00 host app web.1 - at Module.load (module.js:343:32)
» 1 Feb 2017 18:31:03.825 105 <190>1 2017-02-01T16:31:02.714739+00:00 host app web.1 - at Function.Module._load (module.js:300:12)
» 1 Feb 2017 18:31:03.825 98 <190>1 2017-02-01T16:31:02.714739+00:00 host app web.1 - at Module.require (module.js:353:17)
» 1 Feb 2017 18:31:03.825 99 <190>1 2017-02-01T16:31:02.714740+00:00 host app web.1 - at require (internal/module.js:12:17)
» 1 Feb 2017 18:31:03.825 104 <190>1 2017-02-01T16:31:02.714740+00:00 host app web.1 - at Object.<anonymous> (/app/app.js:145:22)
» 1 Feb 2017 18:31:03.825 99 <190>1 2017-02-01T16:31:02.714741+00:00 host app web.1 - at Module._compile (module.js:409:26)
» 1 Feb 2017 18:31:03.825 113 <190>1 2017-02-01T16:31:02.714741+00:00 host app web.1 - at Object.Module._extensions..js (module.js:416:10)
** How often does it happen? **
My gut feeling says the problem is on DigiDocService side, but not proven guilty.
TODO
There is a request for possibility to pin important topics to home page. There are cases when some important topics might get pushed out of sight on clients page and so there should be an options where "superadmin" could possibly pin important topics to always be first in the public list.
Overview
As of 15.11.2018 Rahvaalgatus.ee will be having their own instance of Citizen OS. To promote Rahvaalgatus.ee and help Users find their Topics created in Rahvaalgatus.ee we should show Users a notification.
TODO
TODO
/topics/:topicId/votes/create
- to redirect to Vote if Vote already existsCurrently, if app's language is set to English, the date format looks like mm/dd/yyyy. (08/31/2018)
Since we currently only have one default English and most of our EN-speaking users come from non-US territories, I propose to set current English locale to en-GB for the date format to be displayed as dd/mm/yyyy. (31/08/2018)
When logged in user selects language from language selector, selected value is saved in DB under user language. But if language is changed from URL, user preferences will not be changed. Also if user logs in user preferred language is not loaded. That all results in e-mails that are sent in wrong language, when user has tested/used language that he/she doesn't count as preferred language.
Overview
There is no "create link" button to enable creating links with custom texts.
There used to be, but EP removed it in favor auto-detecting links.
TODO
Overview
The modal that pops up when adding attachments is confusing.
There is lack of information what the icons are (different upload methods), the "Save" button is in a strange place.
Here is a screenshot to explain it all:
Here is how Trello does it, looks quite good to me:
Related to
TODO
Overview
Logging in in Voting view does not reload the view, thus User does not see if they have voted.
TODO
Overview
When User is invited to a Topic, he gets added automatically.
This may cause issues in the future where spammers may use this do distribute their content.
TODO
/invites/:inviteId
-> /invites/users/:inviteId
so that there is a clear distinction between User and Group invites.POST /topics/:topicId/invites
- auth: Topic adminGET /topics/:topicId/invites/:inviteId
- auth: knowing the inviteId
(uuidv4)POST /api/users/:userId/topics/:topicId/invites/:inviteId/accept
- auth: knowing the inviteId
(uuidv4) && user.id === invite.userId
DELETE/topics/:topicId/invites/:inviteId
- auth: Topic admin - citizenos/citizenos-fe#112 (comment)/topics/:topicId/invites
-> /topics/:topicId/invites/users/
so that there is a clear distinction between User and Group invites.Related to:
Overview
In the /my/topics
& /my/groups
(dashboard) views, clicking the section headers ("General information", "User list" etc) should toggle the sections visibility.
The problem
The problem is that if you add "ng-click" to a container and it contains any other action links - both are triggered.
TODO
Description: under certain conditions, activity feed no longer indicates topic title, even though title existed
Why is this a problem: this makes it difficult to track changes to topics later on or possibly raises suspicions of censoring certain activity feed entries.
Possible solution: track topic id ad2b2254-4cca-4e86-b154-258d4118f702 and find out, why activity feed lost track of topic title and previous rights status.
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.