flaque / quirk Goto Github PK
View Code? Open in Web Editor NEW✨🐙 A GPL Licensed Cognitive Behavioral Therapy app for iOS and Android. Currently a teaching tool
Home Page: https://quirk.fyi
License: GNU General Public License v3.0
✨🐙 A GPL Licensed Cognitive Behavioral Therapy app for iOS and Android. Currently a teaching tool
Home Page: https://quirk.fyi
License: GNU General Public License v3.0
It should be easier to see dates of when a thought was recorded. But not sure where we should show that.
In some languages, words can be long. In some screens of the app, e.g. the introduction, the words get split at seemingly arbitrary letters. Languages can have their own hyphenation rules for long words and word wrapping.
Request for comments:
Hello!
I've found a typo under the Alternative Thought point in the second to last slide when the user initially goes through the steps of correcting the posed Automatic Thought. It reads:
"It's true I missed George's party, I can appologize, and he'll probably forgive me"
It should read:
"It's true I missed George's party, I can apologize, and he'll probably forgive me"
It would be nice if the app could be "protected" with TouchId or a password. This doesn't need to be the default, but could be enabled in the Settings.
I see the codebase is in react-native,
Can you share the reasoning behind not having an apk already?
I was wondering if you have any plans for allowing users to export the saved data in any way.
I see that the entries are only saved locally, so the options are:
Any thoughts? I'd be happy to implement this and submit a PR if you can give me some directions.
Thanks!
Something's wrong with the tests. I'm pretty sure it's something to do with *.json
files, since the commit that introduced them into the codepath of the tests is where things start breaking.
FAIL src/sanitize.test.ts
● Test suite failed to run
Jest encountered an unexpected token
This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.
By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".
Here's what you can do:
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/en/configuration.html
Details:
/Users/evanconrad/dev/src/github.com/Flaque/quirk/node_modules/expo/build/environment/validate.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import {
^
SyntaxError: Unexpected token {
at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:471:17)
at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:513:25)
at Object.<anonymous> (node_modules/expo/build/Expo.js:278:1)
At the moment, this is blocking #42
CBT features from a table in the paper "User Experience of Cognitive Behavioral Therapy Apps for Depression: An Analysis of App functionality".
Therapeutic features | Definitions | CBT feature | Apps, n (%) |
Dealing with negative automatic thoughts | Identifying and challenging specific negative automatic thoughts about self or the world | Yes | 15 (48) |
Addressing negative thinking styles | Identifying and challenging thinking styles and patterns; for example, catastrophizing, all-or-nothing thinking | Yes | 9 (29) |
Example activities | Example of pleasurable activities to do to improve one’s mood | Yes | 9 (29) |
Writing and self-reflection | Diaries and journals | No | 6 (19) |
Tracking mood | Tracking and annotating moods | Yes | 5 (16) |
Self-assessment | Tests and scales to assess one’s well-being | No | 5 (16) |
Gratitude and affirmations | Gratitude diary, examples of affirmations, ability to add affirmations, questions encouraging positive thinking about self | No | 5 (16) |
Information about CBT | Articles, blog posts, and other resources explaining cognitive behavioral therapy, its components, and how it works | Yes | 4 (13) |
Information about depression | Articles, blog posts, videos, and other resources explaining depression, its symptoms, how it works, and how to deal with it | Yes | 3 (10) |
Recording thoughts and emotions | Recording information about events, and thoughts and emotions that accompany them | Yes | 3 (10) |
Scheduling activities | Planning activities | Yes | 3 (10) |
Relaxation tracks | Calming music, sounds of nature, etc | No | 3 (10) |
General information about well-being | Articles, blog posts, videos, and other resources about mental health in general, health tips, well-being advice, nutrition, etc | No | 3 (10) |
Tracking anxiety and worries | Tracking anxiety incidents, worry lists | No | 3 (10) |
Recording and monitoring daily activities | Recording activities, matching activities with the calendar and mood information | Yes | 2 (6) |
Challenges and behavioral experiments | Tasks to complete to practice (new) coping skills | Yes | 2 (6) |
Setting goals | Setting up specific goals to works toward | Yes | 2 (6) |
Peer support | Ability to join forums or social networks, ask questions, and talk to others | No | 2 (6) |
Suicide prevention | Links to support services, ability to prepare a crisis plan | Yes | 1 (3) |
Challenging beliefs | Written exercises and examples of tasks to do to address one’s beliefs about the world and self | Yes | 1 (3) |
Breathing exercises | Written or recorded (audio or video) instructions for breathing exercises | No | 1 (3) |
Mindfulness | Mindfulness meditation tracks and written exercise instructions; excludes other types of meditation | No | 1 (3) |
Fun content | Games, jokes, and humorous content to provide distractions and improve one’s mood | No | 1 (3) |
Inspirational quotes | Quotes of famous people to provide motivation and lift one’s mood | No | 1 (3) |
Meditation | Guided meditation, topics to contemplate; excludes mindfulness | No | 1 (3) |
Physical exercise and yoga | Suggestions for specific exercises or yoga sessions | No | 1 (3) |
We don't need to implement all of these, and in my opinion we shouldn't, but I'm keeping this here as an example of what the field is like.
I would be really hesitant to suggest that "more features" are better here. From a product design perspective, more features can overwhelm a user, spread developer effort too thin, and eat up valuable UI real estate.
Plus, the more CBT and "general health" features we add, often the specific the app becomes. That makes it harder for folks with less common conditions to use the app.
For example, many CBT apps currently ask you to record your mood. While that is a CBT exercise, AFAIK it's not typically an exercise given to folks with panic attacks, OCD, or other non-depression conditions. So by adding it in, we're not just making the experience "better" for depressive users, we're making it worse for non-depressive users.
Often existing mental health app designers fall into a "captive market" hypothesis. They believe that in order to best treat their users, they must be the only mental health app. So rather than trying to do one thing really well, they try do to everything within the context of a single app. This ultimately leads to a poor user experience.
I hate writing in portraid mode, I can't in fact! It would be nice if quirk supported landscape mode.
Given that thoughts are quite sensitive, I think it might be worth telling folks during on-boarding that their data will never leave the device. Down the line it might even be a good idea to allow passcode protection of the list screen, but that’s just thinking out loud.
We can't delete items in Quirk. That should be possible by swiping over to the left like in other apps.
I can not take a screenshot of it soo let me explain.
Go to the "Cognitive Distortion"
Hold down and do not release any of the buttons.
The button gets greyed out. Like deactivated.
Now release the button. It activates and gets highlighted.
I think you should confirm the press itself by highlighting too.
I feel no confirmation from the app during the press.
It feels disconnected and not reassuring.
Confirm press itself. Yes user I got your choosing.
Highlight after release to mark it active.
Please add an iPad build.
And let me use the app in vertical and horizontal screen mode.
Thank you!
This thread is a place for rough screenshots of the current state of the app while it's in development, including which things need work.
Sideways because photos are hard.
If you contributed to the project, I would love to mail you a sticker (along with a note of thanks!).
Specifically I'd like to call out these amazing people for their crazy awesome work:
Two ways to get them:
Send your address and preferred sticker-delivery-method to this email: [email protected]
Maybe it would be better if deleting thoughts would require confirmation or the usual swipe to delete button?
The input items in the cognitive distortion selector are crap, we should fix them.
Setting the text size (in Settings: Display & Brightness) to anything larger than the center of the scale causes artifacts in the introduction.
I don't have an Android phone. I'd love to make this app really great on Android, but I don't use it and can't as easily verify that it's as bug free and stable as the iOS version.
So I'm seeking someone who would be willing to take on an "Android Champion" role.
Using something like this: https://github.com/wenkesj/react-native-voice
While the README highlights the focus on privacy the resulting application sadly doesn't. I don't think it's intended so I hope that the report helps to start investigating the reasons for that and remove the tracks from the Code:
https://reports.exodus-privacy.eu.org/en/reports/69301/
The exodus report indicates that there are code signatures of 11 trackers/ad services involved. Important: It doesn't mean they are active, but that's something that should be investigated.
My idea where this comes from: Dependencies. Since I already mention I don't expect it to be intentional, there is likely that those trackers came as "side-loaded content" by one of the dependencies. Anyway, I think it's important to find and getting rid of them. Hope you get this fixed soon as the app is great! GPL 👍
Thanks for nice project. It'll be great for applying CBT's techniques in life.
Is there any plans about preparing localization and internationalization?
When it's ready, I can help translating string assets to Korean.
I wanted to run the app on my android phone but I just get a "Something went wrong" screen.
Error log shows:
Uncaught Error: Error while updating property 'borderRadius' of a view managed by: RTCView
Android Version 9
Device: OnePlus 5T
When the user creates a thought, then presses the "go back to screen" button, it doesn't preserve the thought they were just on which messes with the way screens normally work. Plus, if you "swipe" left it has the correct effect.
Can we fade in when we load? Some other apps appear to fade in. Am I crazy or is that actually happening?
It would be nice to be able to know what I was thinking about last week, or yesterday, that type of thing. Right now it only shows today, and doesn't recognize that some prior entries are not from today.
When you click on a list item, you go back to the creation screen with the items prefilled out. That makes it really easy to accidentally change or wipe something when you're just looking.
We should make it slightly harder to modify when you click on a list item. We can probably do that by having an entrance from the list view put the creation screen into an "view" mode and then having an edit
button that the user needs to click on in order to be able to modify the inputs.
The titlebar is a white on white and that's bad.
Thank you for making such an app. I am very interested in trying it out! Looks very polished.
I wanted to share the link of the webpage (https://getquirk.app/), but it doesn't contain the link for the Android version, only the IPhone version.
These are all the things that we need to do in order to publish. We're publishing first on iOS.
These are required to publish for iOS.
These we should do, but aren't required to publish for iOS.
Hi,
I’m a Korean programmer and had CBT before. I think it should be great if you support other languages.
I translated ‘groovy programming language’ into korean and contributed translation of ‘django girls’.
Do you have plan for internalization?
Why link to https://en.wikipedia.org/wiki/Cognitive_behavioral_therapy#Declining_effectiveness instead of the article without the anchor? (And very strange anchor to choose). I'm guessing that was just a copy/paste human error.
The sentence structure of some languages (subject-object-predicate order) may be different.
Examples:
English: "Welcome to quirk, the Cognitive Behavioral Therapy (CBT) App."
When translate this to Turkish, sentence structure is changing like this:
"Bilişsel Davranışçı Terapi (BDT) uygulaması quirk 'e hoş geldiniz!"
If we look at word by word:
I tried this for add this Turkish sentence:
"intro": {
"line1":"",
"emphasis1": "Bilişsel Davranışçı Terapi (BDT)",
"line2":" uygulaması",
"emphasis2": "quirk",
"line3": "'e hoş geldiniz!"
},
but as you can see there is a little space before the word ("Bilişsel").
English: "Second: your thoughts can be automatic"
Turkish: "İkinci olarak: düşünceleriniz otomatikleşmiş olabilir"
Word by word:
I tried this:
"thoughts_arent_thoughts": {
"line1": "İkinci olarak: düşünceleriniz",
"emphasis1": "otomatikleşmiş",
"line2": "olabilir."
},
but as you can see, there are missing word ("olabilir") on the screen.
Therefore, we need to be able to change the line order (including adding new lines).
Such a structure came to my mind:
"intro": {
"1": { "type": "emphasis", "text": "Bilişsel Davranışçı Terapi (BDT)" },
"2": { "type": "line", "text": "uygulaması" },
"3": { "type": "emphasis", "text": "quirk" },
"4": { "type": "line", "text": " 'e hoş geldiniz!" }
},
Pseudo code:
var intro = {
"1": { "type": "emphasis", "text": "Bilişsel Davranışçı Terapi (BDT)" },
"2": { "type": "line", "text": "uygulaması" },
"3": { "type": "emphasis", "text": "quirk" },
"4": { "type": "line", "text": " 'e hoş geldiniz!" }
}
for (var line in intro) {
var properties=intro[line];
if (properties.type == "emphasis") {
console.log("<Exaggerated>"+properties.text+"</Exaggerated>")
} else {
console.log(properties.text);
}
}
Output:
"<Exaggerated>Bilişsel Davranışçı Terapi (BDT)</Exaggerated>"
"uygulaması"
"<Exaggerated>quirk</Exaggerated>"
" 'e hoş geldiniz!"
But I don't know how to implement this solution in React (I'm not React Developer) and I'm not sure this is a good solution. What you think about this solution? Or do you have any other suggestions?
Thanks for this amazing app. I would be happy to help contribute.
This site can’t provide a secure connection getquirk.app sent an invalid response.
Try running Windows Network Diagnostics.
ERR_SSL_PROTOCOL_ERROR
First off, let me say thank you for creating and open-sourcing such an app. You're awesome!
Have you thought about publishing the app on F-Droid?
It would be awesome if there was a dark theme.
I was reading the readme, and the design part mentions Qurik instead of Quirk.
That's pretty annoying.
The UI file has a lot of tech debt :/
style
a prop that you can pass in.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.