alkem-io / server Goto Github PK
View Code? Open in Web Editor NEWCore server in the Alkemio platform, offering a GraphQL api for interacting with the logical domain model.
Home Page: http://alkem.io
License: European Union Public License 1.2
Core server in the Alkemio platform, offering a GraphQL api for interacting with the logical domain model.
Home Page: http://alkem.io
License: European Union Public License 1.2
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Smartphone (please complete the following information):
Additional context
Add any other context about the problem here.
As a client that is interacting with a CT server, I want to have an npm package available that I can use to interact with the CT server. To include
Acceptance criteria:
Questions: do we need to establish a CherryTwist organisation profile on NPM registery?
The reason for this issue is that currently the project does not provide unified code formatting. Which will lead to messy and not well formatted code in the future. Configuring this at the beginning of the project will make our life easier in the future, the code will be well structured and easy to read.
Some ideas how to configure it.
https://www.robertcooper.me/using-eslint-and-prettier-in-a-typescript-project
Most common things to discuss:
Any suggestions are welcome
Why ESLint over TSLint? The future of TypeScript on ESLint
As a partner who deploys an instance of CT, I want to be able to authenticate users of the platform using a centralised identity provider so that people can use the platform.
The first partner deployment is Odyssey Momentum, but before that we need to have identity / authentication embedded in the Demo.Simple application.
Authorisation design for now separate
TBD - what happens when a new user is added into CT? Do they automagically get an account within the identity provider? Onboarding?
As a user I want that the groups for a challenge are just available within the context of the challenge so that I can manage them independently from the groups in other challenges
Note: we may need a design discussion about adding additional queries.
As a developer
I want helm charts
So that I can deploy cherrytwist/server to k8s
As a release manager I want to have control over when version numbers are adjusted so that we have a clear release history
As a developer I want to always know that there is exactly one Ecoverse object available so that I can rely on having the object available.
Describe the bug
Doing a docker-compose up as per the instructions results in a docker stack that is not running.
Finally, is the .env.default still needed? I tried removing it but got other errors showing up so I put it back as was not sure where it was picked up from
To Reproduce
Steps to reproduce the behavior:
Looks like a race condition whereby the db is not available when the server first tries to connect and it does not retry thereafter. Fix: order the startup with a lapse or have the server retry after a failed connection?
As a developer I want to have robust + flexible logging that I can configure at runtime so that I can get insight into what is happening on the server at multiple levels of granularity.
After a quick scan by usage:
Good articles on the subject:
https://www.loggly.com/blog/a-benchmark-of-five-node-js-logging-libraries/
https://www.npmtrends.com/log4js-vs-loglevel-vs-winston
https://developer.ibm.com/technologies/node-js/tutorials/learn-nodejs-winston/
https://npmcompare.com/compare/bunyan,log4js,winston
As a user of CT I want to be able to authenticate myself so that I have access to the application.
As a deployer I would like to be able to store the e.g. github handles of users so that they can be displayed as part of the user profile
e.g. techsmyth as Neil's github handle
THIS EXCLUDES AUTHORISATION
As a developer I want documentation within the graphql schema so that I can effectively use it.
Describe the bug
As per semantic versioning the number should start with a 0 while in development.
To Reproduce
Steps to reproduce the behavior:
Describe the bug
Uploading the sample challenge files from Odyssey triggers a number of field size limits
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Smartphone (please complete the following information):
Additional context
Add any other context about the problem here.
As a contributor I want that it is very easy to get a running server going so that I can quickly test it out.
Research possibilities for caching
As a developer I want an easy way to reset the server back to an empty database so that I can continue my testing
As a developer I want to be easily able to access docker images for CT containers so that I can easily get development / test environments running.
Note: tags now part of the development ways of working
As a user of the api, I want to be able to add/update groups to all entities that have groups so that I can via a compact api work with the data
As a challenge owner I want to be able to store references with additional information such as a label and a description so that the rational behind the reference is clear. >
Describe the bug
It is not possible to reset the db at the moment
To Reproduce
Steps to reproduce the behavior:
Does the documentation need to be updated?
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Smartphone (please complete the following information):
Additional context
Add any other context about the problem here.
As a developer I want to be able to load sample data in from a json file to avoid having to update all images via code
As a developer working with the graphql api I want to have a clean api that exposes the right set of data so that I can easily navigate the model.
To include:
As a developer I want to be able to carry out commands related to the state of the data managed by the server remotely so that the server can be put back into a known state.
As a developer I want to have two levels of branches so that there is multiple levels of quality visible.
In development mode we need a way to reload the server on file changed. Currently the project have to be killed and run again in order latest change to be available.
Options:
My proposal is to start with nodemon as most straight-forward solution.
As a user of the CT api, I want to be easily able to access the members at each level of the hierarchy so I can intuitively navigate the structure.
As a developer I would like to have an easy way to generate a new docker image for the server that is tagged with the version number and pushed to the registry
@@ look at https://github.com/ryanramage/docker-build-run-push
As a developer I want a connection factory so that migrations can take place and it is also simply better that the parameters are specified in a config file(i.e. entries that are not environment specific)
Requires putting in place an ingres server
As a client to CT, I would like to retrieve a single user, a single challenge via the relevant id
e.g. challenge(id: String!): Challenge
As a developer I want a recognisable name for the docker-compose'd stack from the server project, and that containers have names so can reliably populate the db data.
As a developer I want to be able to execute nested mutations on the api so that I can execute updates that have multiple levels
The issue is with lazy loaded nested input types in a Promise call within type-graphql.
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:
"error": {
"errors": [
{
"message": "Variable "$challengeData" of required type "UpdateRootChallengeInput!" was not provided.",
"locations": [
{
"line": 1,
"column": 26
}
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"stacktrace": [
"GraphQLError: Variable "$challengeData" of required type "UpdateRootChallengeInput!" was not provided.",
" at _loop (/usr/src/app/node_modules/graphql/execution/values.js:94:17)",
" at coerceVariableValues (/usr/src/app/node_modules/graphql/execution/values.js:121:16)",
" at getVariableValues (/usr/src/app/node_modules/graphql/execution/values.js:50:19)",
" at buildExecutionContext (/usr/src/app/node_modules/graphql/execution/execute.js:206:61)",
" at executeImpl (/usr/src/app/node_modules/graphql/execution/execute.js:104:20)",
" at Object.execute (/usr/src/app/node_modules/graphql/execution/execute.js:63:35)",
" at /usr/src/app/node_modules/apollo-server-core/src/requestPipeline.ts:548:22",
" at Generator.next ()",
" at /usr/src/app/node_modules/apollo-server-core/dist/requestPipeline.js:8:71",
" at new Promise ()"
]
}
}
}
]
}
As a developer I want to be able to selectively disable authentication for when I am developing
Note: for now default is off
As a user of the api, I want to be able to add tags to any taggable entity so that I can via a compact api work with the data
Note: may involve creating a "Profile" type entity on the above entities
As a developer I want that the ORM mapping layer is able to save the entities together with child entities in one transaction
As a developer I want to be able to craete a docker image from the node based server
As a developer I would like to change the GraphQL data source to mySQL.
According to TypeORM official documentation only mySQL, SQL Server and PostgreSQL support transactions.
As host organisation deploying a Cherrytwist instance, I want to be able to inject custom business logic into the operation of the server so that I can add my own business rules into the events on the server
As a user I want to be able to store images with the users, groups and challenges so that I can manage that visual information together with the relevant text.
Key support needed:
Size guidelines / restrictions?
How would this data would be migrated / pulled from another environment?
Where is the data stored?
Sample export from Odyssey below.
{"id":1258044,"name":"John Doh","email":"[email protected]","first_name":"John","last_name":"Doh","avatar":{"url":"https://d3evbfoo20rmgo.cloudfront.net/uploads/user_organization/avatar/1258044/556974af-77ef-4263-877b-e9ae565d38d8.jpg","thumb":{"url":"https://d3evbfoo20rmgo.cloudfront.net/uploads/user_organization/avatar/1258044/thumb_556974af-77ef-4263-877b-e9ae565d38d8.jpg"},"small_thumb":{"url":"https://d3evbfoo20rmgo.cloudfront.net/uploads/user_organization/avatar/1258044/small_thumb_556974af-77ef-4263-877b-e9ae565d38d8.jpg"},"mini_thumb":{"url":"https://d3evbfoo20rmgo.cloudfront.net/uploads/user_organization/avatar/1258044/mini_thumb_556974af-77ef-4263-877b-e9ae565d38d8.jpg"}},"groups":[{"is_admin":false,"id":29565,"name":"Global Odyssey Community","status":"accepted","last_invited_in":null},{"is_admin":false,"id":29579,"name":"Track 'Nature 2.0'","status":"accepted","last_invited_in":null},{"is_admin":false,"id":29580,"name":"Track 2019 'Scaling Ecosystems'","status":"accepted","last_invited_in":null},{"is_admin":false,"id":29584,"name":"Track 2019 'Digital Nation’s Infrastructure'","status":"accepted","last_invited_in":null},{"is_admin":false,"id":29589,"name":"Track 'Fossil Free Future'","status":"accepted","last_invited_in":null},{"is_admin":false,"id":29629,"name":"Track 2019 '21st Century Digital Citizenship'","status":"accepted","last_invited_in":null},{"is_admin":false,"id":31139,"name":"Jedi 2019","status":"accepted","last_invited_in":null},{"is_admin":false,"id":31830,"name":"Odyssey Hackathon 2019","status":"accepted","last_invited_in":null},{"is_admin":false,"id":35978,"name":"Track 'Conscious Cities'","status":"accepted","last_invited_in":null},{"is_admin":false,"id":39369,"name":"PrivateTracer","status":"accepted","last_invited_in":1585912554171}],"fields":{},"is_registered":true,"created_at":1545337073581,"updated_at":1598534611216}
Describe the bug
The version number is currently at 0.1.0 which is not correct. It should be 0.1.3
To Reproduce
As a developer I want that the server initialises with a clean default state that can then have additional data populated.
As a new contributor
I want to start contributing as fast as possible
So that we need to update documentation to cover all prerequisites for new contributors to get project up and running.
As a contributor I want to be able to be a full overview of the technical stack and dependencies used on the server so that I can quickly be effective on the project / make decisions on using the solution.
As a maintainer of the system I want the user profile fields to be retrieved from AAD where possible so that information is not duplicated in multiple places.
As a contributor I want to be able to get the latest version using the Demo.Simple project
To cover aspects that describe the context for the challenge.
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.