{"id":21619763,"url":"https://github.com/muthuri-dev/personal-journaling-app","last_synced_at":"2026-04-04T21:32:24.404Z","repository":{"id":247004718,"uuid":"824798976","full_name":"muthuri-dev/Personal-Journaling-App","owner":"muthuri-dev","description":"Personal Journaling App is a sleek and intuitive platform designed to help you document your thoughts, experiences, and reflections effortlessly","archived":false,"fork":false,"pushed_at":"2024-07-09T06:53:37.000Z","size":2705,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-15T18:56:34.644Z","etag":null,"topics":["expo-cli","graphql","healthcare","journaling","jwt-authentication","monorepo","nestjs-backend","passportjs","postgresql","prisma","react-native","zustand"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/muthuri-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-07-06T01:37:01.000Z","updated_at":"2024-07-09T06:53:41.000Z","dependencies_parsed_at":"2025-06-15T18:37:11.439Z","dependency_job_id":null,"html_url":"https://github.com/muthuri-dev/Personal-Journaling-App","commit_stats":null,"previous_names":["muthuri-dev/personal-journaling-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/muthuri-dev/Personal-Journaling-App","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muthuri-dev%2FPersonal-Journaling-App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muthuri-dev%2FPersonal-Journaling-App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muthuri-dev%2FPersonal-Journaling-App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muthuri-dev%2FPersonal-Journaling-App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/muthuri-dev","download_url":"https://codeload.github.com/muthuri-dev/Personal-Journaling-App/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muthuri-dev%2FPersonal-Journaling-App/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31415110,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T20:09:54.854Z","status":"ssl_error","status_checked_at":"2026-04-04T20:09:44.350Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["expo-cli","graphql","healthcare","journaling","jwt-authentication","monorepo","nestjs-backend","passportjs","postgresql","prisma","react-native","zustand"],"created_at":"2024-11-24T23:09:51.632Z","updated_at":"2026-04-04T21:32:24.386Z","avatar_url":"https://github.com/muthuri-dev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003cp align=\"center\"\u003e\n \u003ch1\u003e Personal-Journaling-App\u003c/h1\u003e\n\u003c/p\u003e\n\nPersonal Journaling App is a sleek and intuitive platform designed to help you document your thoughts, experiences, and reflections effortlessly. Whether you're a daily journaler or someone who writes sporadically, this app caters to your needs with a range of customizable features and a user-friendly interface.\n\n## Developers with expo go app\n\n![scan](https://github.com/muthuri-dev/Personal-Journaling-App/assets/82339780/64943c5d-d84f-4014-88c9-b3a3ab06ac10)\n\n### link\n\n[Link to view app](https://expo.dev/preview/update?message=final\u0026updateRuntimeVersion=1.0.0\u0026createdAt=2024-07-07T23%3A08%3A57.097Z\u0026slug=exp\u0026projectId=e791ace3-514f-4f04-bda5-2c1f92eda0d3\u0026group=50c45114-fd05-4206-8cde-09a2a7c38ec8)\n\n## views\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/muthuri-dev/Personal-Journaling-App/assets/82339780/3b54e17e-8d1f-4e16-8fae-fd6a514b56da\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/muthuri-dev/Personal-Journaling-App/assets/82339780/575c470b-828b-4599-9cec-0e014dbb2952\" width=\"800\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/muthuri-dev/Personal-Journaling-App/assets/82339780/ab1f291b-38e2-441e-a033-c66031a56466\" width=\"800\"/\u003e\n\u003c/p\u003e\n\n\n## Features\n\nJournal comes with a wide range of features tailored for horse care:\n\n## Demo of the app\n\nhttps://github.com/muthuri-dev/portifolio/assets/82339780/94631cd4-9e73-4234-8bfd-31081ea0b792\n\n\n\n## Features\n\nJornal comes with a wide range of features tailored for horse care:\n\n\n- **Login register**: One can be able to create account and secure the data.\n- **Create journals**: Write down your thoughts , moments and experiences.\n- **View journals**: Get to tech your journals.\n- **Update password**: be able to update password for secure purposes.\n\n## Installation\n\nTo start using Equine Tracker, follow these installation steps:\n\n1. Fork and Clone the repository:\n\n   ```bash\n   git clone https://github.com/muthuri-dev/Personal-Journaling-App\n   ```\n\n2. Navigate to the project directory:\n\n   ```bash\n   cd Personal-Journaling-App\n   ```\n\n3. Install the required dependencies:\n\n   ```bash\n   # for expo app\n   cd apps/client \u0026\u0026 npm install\n    # for api\n   cd apps/api-server \u0026\u0026 npm install\n   ```\n\n4. Start the application:\n\n   ```bash\n   # for expo app\n   npx expo start\n   # for api-server\n   npm run start:dev\n   ```\n\n   5.Create .env file and add:\n\n   ```bash\n   # database -relational(postgres)\n     DATABASE_URL\n     AUTH_SECRETE_KEY\n   ```\n\n## Server\n\nThe application uses graphql api endpoint\n\n```bash\n@Module({\n  imports: [\n    GraphQLModule.forRoot\u003cApolloDriverConfig\u003e({\n      introspection: true,\n      driver: ApolloDriver,\n      sortSchema: true,\n      autoSchemaFile: join(process.cwd(), 'src/schema.gql'),\n    }),\n    UsersModule,\n    AuthModule,\n    JournalsModule,\n  ],\n  providers: [ConfigService, PrismadbService],\n})\nexport class AppModule {}\n\n```\n\n### Connecting to the api-server in react native(expo)\n\n```bash\nimport { ApolloClient, InMemoryCache, createHttpLink } from \"@apollo/client\";\nimport { setContext } from \"@apollo/client/link/context\";\nimport { useAuthStore } from \"@/store/useAuthStore\";\n\nconst httpLink = createHttpLink({\n  uri: \"https://journaling-app-api.zeabur.app/graphql\",\n});\n\nconst authLink = setContext((_, { headers }) =\u003e {\n  // Get the authentication token from Zustand store\n  const token = useAuthStore.getState().token;\n\n  // Return the headers to the context so httpLink can read them\n  return {\n    headers: {\n      ...headers,\n      authorization: token ? `Bearer ${token}` : \"\",\n    },\n  };\n});\n\nconst client = new ApolloClient({\n  link: authLink.concat(httpLink),\n  cache: new InMemoryCache(),\n});\n\nexport default client;\n\n```\n\n## Api Documentation\n\n### register user mutation\n\n```bash\n# mutation\nmutation Register {\n    register(authDto: { password: \"12\", username: \"kennedy\" }) {\n        created_at\n        id\n        updated_at\n        username\n    }\n}\n\n# response\n{\n    \"data\": {\n        \"register\": {\n            \"created_at\": \"2024-07-09T06:20:57.787Z\",\n            \"id\": \"clye0vuil0000kijucda5eejp\",\n            \"updated_at\": \"2024-07-09T06:20:57.787Z\",\n            \"username\": \"kennedy\"\n        }\n    }\n}\n\n```\n\n### login user mutation\n\n```bash\n# mutation\nmutation Login {\n    login(authDto: { password: \"12\", username: \"kennedy\" }) {\n        access_token\n        user {\n            created_at\n            id\n            updated_at\n            username\n            journal {\n                category\n                content\n                created_at\n                date\n                feeling\n                id\n                title\n                updated_at\n                user_name\n            }\n        }\n    }\n}\n\n\n# response\n{\n    \"data\": {\n        \"login\": {\n            \"access_token\": \"eyJhbGciOiJIUzI1Ni ****\",\n            \"user\": {\n                \"created_at\": \"2024-07-09T06:20:57.787Z\",\n                \"id\": \"clye0vuil0000kijucda5eejp\",\n                \"updated_at\": \"2024-07-09T06:20:57.787Z\",\n                \"username\": \"kennedy\",\n                \"journal\": null\n            }\n        }\n    }\n}\n\n```\n\n### create journal mutation\n\n```bash\n# mutation\nmutation CreateJournal {\n    createJournal(\n        createDto: {\n            category: \"work\"\n            content: \"Did app documentation\"\n            date: \"07/07/24\"\n            feeling: \"happy\"\n            title: \"App documentation\"\n            user_name: \"kennedy\"\n        }\n    ) {\n        category\n        content\n        created_at\n        date\n        feeling\n        id\n        title\n        updated_at\n        user_name\n    }\n}\n pass access_token : \"access_token\": \"eyJhbGciOiJIUzI1Ni ****\",\n\n# response\n{\n    \"data\": {\n        \"createJournal\": {\n            \"category\": \"work\",\n            \"content\": \"Did app documentation\",\n            \"created_at\": \"2024-07-09T06:32:56.075Z\",\n            \"date\": \"07/07/24\",\n            \"feeling\": \"happy\",\n            \"id\": \"clye1b92i0002kiju4cjst4or\",\n            \"title\": \"App documentation\",\n            \"updated_at\": \"2024-07-09T06:32:56.075Z\",\n            \"user_name\": \"kennedy\"\n        }\n    }\n}\n\n```\n\n### get user journals query\n\n```bash\n# query\nquery Journals {\n    journals(username: \"kennedy\") {\n        category\n        content\n        created_at\n        date\n        feeling\n        id\n        title\n        updated_at\n        user_name\n    }\n}\n\n pass access_token : \"access_token\": \"eyJhbGciOiJIUzI1Ni ****\",\n\n# response\n{\n    \"data\": {\n        \"journals\": [\n            {\n                \"category\": \"work\",\n                \"content\": \"Did app documentation\",\n                \"created_at\": \"2024-07-09T06:32:56.075Z\",\n                \"date\": \"07/07/24\",\n                \"feeling\": \"happy\",\n                \"id\": \"clye1b92i0002kiju4cjst4or\",\n                \"title\": \"App documentation\",\n                \"updated_at\": \"2024-07-09T06:32:56.075Z\",\n                \"user_name\": \"kennedy\"\n            }\n        ]\n    }\n}\n\n```\n\n### remove journal mutation\n\n```bash\n# mutation\nmutation RemoveJournal {\n    removeJournal(id: \"clye1b92i0002kiju4cjst4or\") {\n        category\n        content\n        created_at\n        date\n        feeling\n        id\n        title\n        updated_at\n        user_name\n    }\n}\n\n\n pass access_token : \"access_token\": \"eyJhbGciOiJIUzI1Ni ****\",\n\n# response\n{\n    \"data\": {\n        \"removeJournal\": {\n            \"category\": \"work\",\n            \"content\": \"Did app documentation\",\n            \"created_at\": \"2024-07-09T06:32:56.075Z\",\n            \"date\": \"07/07/24\",\n            \"feeling\": \"happy\",\n            \"id\": \"clye1b92i0002kiju4cjst4or\",\n            \"title\": \"App documentation\",\n            \"updated_at\": \"2024-07-09T06:32:56.075Z\",\n            \"user_name\": \"kennedy\"\n        }\n    }\n}\n```\n\n### update password mutation\n\n```bash\n# mutation\nmutation UpdateUserPassword {\n    updateUserPassword(updateDto: { password: \"123\", username: \"kennedy\" }) {\n        created_at\n        id\n        updated_at\n        username\n    }\n}\n\n\n\n pass access_token : \"access_token\": \"eyJhbGciOiJIUzI1Ni ****\",\n\n# response\n{\n    \"data\": {\n        \"updateUserPassword\": {\n            \"created_at\": \"2024-07-09T06:20:57.787Z\",\n            \"id\": \"clye0vuil0000kijucda5eejp\",\n            \"updated_at\": \"2024-07-09T06:40:29.100Z\",\n            \"username\": \"kennedy\"\n        }\n    }\n}\n```\n\n### errors of not passing access_token\n\n```bash\n# example get all users muatation\nquery Users {\n    users {\n        created_at\n        id\n        updated_at\n        username\n    }\n}\n\n\n# response\n{\n    \"errors\": [\n        {\n            \"message\": \"Unauthorized\",\n            \"locations\": [\n                {\n                    \"line\": 2,\n                    \"column\": 5\n                }\n            ],\n            \"path\": [\n                \"users\"\n            ],\n            \"extensions\": {\n                \"code\": \"UNAUTHENTICATED\",\n                \"stacktrace\": [\n                    \"UnauthorizedException: Unauthorized\",\n                    \"    at JwtAuthGuard.handleRequest (/src/src/auth/guards/jwt.guard.ts:17:20)\",\n                    \"    at /src/node_modules/@nestjs/passport/dist/auth.guard.js:44:124\",\n                    \"    at /src/node_modules/@nestjs/passport/dist/auth.guard.js:83:24\",\n                    \"    at allFailed (/src/node_modules/passport/lib/middleware/authenticate.js:110:18)\",\n                    \"    at attempt (/src/node_modules/passport/lib/middleware/authenticate.js:183:28)\",\n                    \"    at strategy.fail (/src/node_modules/passport/lib/middleware/authenticate.js:314:9)\",\n                    \"    at /src/node_modules/passport-jwt/lib/strategy.js:106:33\",\n                    \"    at /src/node_modules/jsonwebtoken/verify.js:171:14\",\n                    \"    at getSecret (/src/node_modules/jsonwebtoken/verify.js:97:14)\",\n                    \"    at module.exports [as verify] (/src/node_modules/jsonwebtoken/verify.js:101:10)\"\n                ],\n                \"originalError\": {\n                    \"message\": \"Unauthorized\",\n                    \"statusCode\": 401\n                }\n            }\n        }\n    ],\n    \"data\": null\n}\n```\n\n## Contributing\n\nWe welcome contributions from the community! If you have ideas for improvements, bug reports, or want to contribute code, please check our [Contribution Guidelines](CONTRIBUTING.md) for details on how to get involved.\n\n## License\n\nEquine Tracker is open-source software licensed under the Apache License 2.0. For full details, refer to the [LICENSE](LICENSE) file.\n\n## Acknowledgments\n\nWe'd like to extend our gratitude to the equestrian community for their support and inspiration.\n\nThank you for choosing us!\n\n```bash\n  function currentMood(mood:string):string{\n    return mood;\n  }\n\n  currentMood(\"happy 😂\")\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuthuri-dev%2Fpersonal-journaling-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmuthuri-dev%2Fpersonal-journaling-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuthuri-dev%2Fpersonal-journaling-app/lists"}