GithubHelp home page GithubHelp logo

xyvora / achievaim Goto Github PK

View Code? Open in Web Editor NEW
5.0 2.0 4.0 1.54 MB

Achiev𝘼𝙄m (pronounced "AchieveAim" or "uh-cheev-aim", IPA: /əˈtʃi:v eɪm/) is a user-friendly, scalable SaaS web application. This platform seamlessly integrates with various calendar and software applications, harnessing the power of Generative AI. Designed to assist users in crafting and tracking their SMART goals efficiently and effectively.

Home Page: https://achievaim.com

License: MIT License

HTML 0.22% Svelte 42.57% JavaScript 1.29% Dockerfile 0.53% Python 36.62% TypeScript 17.63% CSS 0.02% Just 1.11%
fastapi goals python svelte typescript openai

achievaim's Introduction

Achiev𝘼𝙄m

Tests Status pre-commit.ci status

AchieveAim Profile Picture - 1280 x 640

Link Description
achievaim repo Codebase
Achiev𝘼𝙄m Project Project progression, tracking and management.
Achiev𝘼𝙄m Wiki Past meeting notes, research, and documentation.
Achiev𝘼𝙄m Discord Conversation Achiev𝘼𝙄m discussions on development, help and ideas.

Achiev𝘼𝙄m is a user-friendly and scalable SaaS web application. It seamlessly integrates with calendar and other software applications, leveraging the power of Generative AI to assist users in creating and tracking their SMART goals effectively.


Features

  • Identify and create SMART goals using a click of a button.
  • Generate personalized goal suggestions using OpenAI GPT API
  • Track goal progress and update details from a single page
  • Set goal duration, days of the week, and repetition
  • Easily integrate SMART goals with automatic SMART goal events in Google or Outlook.

Tech Stack

  • Svelte: Front-end framework for building user interfaces
  • Tailwind CSS: Utility-first CSS framework
  • DaisyUI: Plugin for Tailwind CSS that provides UI components
  • FastAPI: A modern, fast, web-based, Python framework for building APIs
  • OpenAI GPT API: Generative AI API for generating goal suggestions
  • MongoDB: Database for storing goal data

Solution

Professionals and students struggle with setting, tracking, and achieving their goals. They often use multiple platforms to manage their tasks, appointments, and goals, leading to disorganization and inefficiency. Existing solutions may not offer seamless integration with commonly used calendar applications like Google and Outlook, making it difficult for users to synchronize their goals and tasks with their schedules. Furthermore, these solutions may not use advanced AI Large Language Models (LLMs) to provide personalized goal recommendations and progress tracking.


Installation

Clone the repository:

git clone [email protected]:xyvora/achievaim

Navigate to the project directory:

cd achievaim

Install the dependencies:

just install

Create a .env file in the root directory and provide the necessary environment variables:

OPENAI_API_KEY=<your-openai-api-key>

Usage Start the development server backend API:

just api

Start the frontend

just frontend-dev

Open your browser and visit http://localhost:3000 to access the app or relevant localhost address generated after running.

Contributing

Contributions are welcome! If you are interested in contributing please see our contributing guide

License

This project is licensed under the MIT License.

Feel free to modify and customize the README file according to your project's specifics.

achievaim's People

Contributors

cgorha avatar dependabot[bot] avatar ilevytate avatar pre-commit-ci[bot] avatar sanders41 avatar viktoriussuwandi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

achievaim's Issues

Make update me a patch

#167 add the ability to update a user's profile. This is currently a put request so all information has to be sent with the update, including the password. It would be nice if this was a patch request so only the needed information is updated.

Potentially change repo. name that will align with App name. Current repo name is less than optimal.

Potential names for repo change before unofficially publicized.

  1. "AImarkableTargets"
  2. "GoalGetterAI"
  3. "SMARTGenie"
  4. "TrackAI"
  5. "AImpactGoals"
  6. "MeasurAble"
  7. "SMARTSyncAI"
  8. "RelativAI"
  9. "TimeBoundAI"
  10. "OptimAIm"
  11. "GenSMART"
  12. "GaugeGoalsAI"
  13. "AImbitiousPath"
  14. "AImReach"
  15. "SMARTSprintAI"
  16. "AchievAIm"
  17. "GoalGraphAI"
  18. "AIspire"
  19. "TrackerAI"
  20. "SMARTSpectraAI".
  21. "SMARTGoalGenAI"
  22. "AIchieveSMART"
  23. "SMARTTrackAI"
  24. "GoalGaugeSMART"
  25. "SMARTSpectrumAI"
  26. "GenAISmartGoals"
  27. "SMARTMilestoneAI"
  28. "SMARTSpireAI"
  29. "AiSMARTProgress"
  30. "GoalGatherSMART"
  31. "AISmartPath"
  32. "SMARTVistaAI"
  33. "SmartMoverAI"
  34. "GoalGridSMART"
  35. "SmartStepAI"
  36. "SMARTSculptAI"
  37. "GoalGuideSMART"
  38. "SMARTFrontierAI"
  39. "AIMappedSMART"

Update Goals Model

When creating the Goal model I made some assumptions just to get things going that may or may not be correct, the RepeatEvery enum values for example. This should be checked and updated as appropriate.

Backend test suite getting slow

The backend test suite is getting relatively slow. I believe it is beacause of generating the password hash for users on each request is slow. This is slow on purpose for security reason so we should see if session scoping the user information will help.

Add ChatGPT calls

In the refactoring in #4 the button for ChatGPT suggestions was added, but it does not make any calls. This functionality still needs to be added back

Update README

Once #4 merges the README.md will be slightly out of date. Some of the information will need to be updated and some can be moved to the CONTRIBUTING.md with #7

Remove default values when creating goals

With #4, when creating a new goal through the frontend, default values are used for everything but the goal name. This is most likely not what is actually and will need to be updated.

Add end to end testings in frontend tests

The frontend tests should test interaction with the API. To do this in CI the API will need to be started, but when I tried this initially things didn't progress past the API starting. Need to find a solution to this.

Rename Signup component to AccountInfo

The Signup component is used for both signups, and for updating account information so it would make since to rename it to AccountInfo to better describe it's purpose.

Signup component buttons need updating

Currently when I user is not signed in the Signup component displays a Sign Up button, this makes since. When A user is logged in the Sign Up button is still displayed along with a Log Out button. In this situation Sign Up doesn't make since because the user has already signed up if they can log in. Instead the Sign Up Button should be either Save or Update.

Add password to frontend user model

Currently the front end user interface does not contain password and needs to be added. Really we need to sync up the frontend and backend user information and then we can auto generate the frontend interface from the backend.

#52 (comment)

Screen flash on logout

When logging out the screen flashes for a second before redirecting to the home page. This is because in #164 I used svelte's navigate to redirect back home. navigate runs server side so in order for the redirect to happen I had to reload the page. It should be possible to redirect without this reload.

Find a solution to the pre-commit mypy issue

pre-commit is throwing errors with mypy when it shouldn't. I think this is because the backend is in a subdirectory and pre-commit isn't finding the mypy pydantic plugin. See #49 for more context.

Set branches to auto delete on merge

Turning on the setting to delete branches once they are merged will prevent having old branches hanging around.

  1. Click settings

settings

  1. In the general section scroll down to After pull requests are merged, you can have head branches deleted automatically. and check the Automatically delete head branches box.

settings

Change daysOfWeek to an object in the create goal page

Currently daysOfWeek in create-goals/+page.svelte is and array of objects like:

  let daysOfWeek = [
    { name: 'Monday', selected: false },
    { name: 'Tuesday', selected: false },
    { name: 'Wednesday', selected: false },
    { name: 'Thursday', selected: false },
    { name: 'Friday', selected: false },
    { name: 'Saturday', selected: false },
    { name: 'Sunday', selected: false }
  ];

But this means you could push and pop from the list which doesn't make sence, i.e. you could end up with:

  let daysOfWeek = [
    { name: 'Monday', selected: false },
    { name: 'Tuesday', selected: false },
    { name: 'Wednesday', selected: false },
    { name: 'Thursday', selected: false },
    { name: 'Friday', selected: false },
    { name: 'Saturday', selected: false },
    { name: 'Sunday', selected: false },
    { name: 'Tuesday', selected: false },
    { name: 'Friday', selected: false },
    { name: 'Friday', selected: true },
  ];

Let's instead create an interface in types.ts since we know exactly what the keys should be:

export interface DaysOfWeek {
  monday: boolean;
  tuesday: boolean;
  wednesday: boolean;
  thursday: boolean;
  friday: boolean;
  saturday: boolean;
  sunday: boolean;
}

Then daysOfWeek in create-goals/+page.svelte would be:

let daysOfWeek: DaysOfWeek {
  monday: false,
  tuesday: false,
  wednesday: false,
  thursday: false,
  friday: false,
  saturday: false,
  sunday: false,
}

Theme toggle sometimes show wrong theme

Sometimes when in light mode the dark them shows and vice versa. I think this is because it is a toggle with no state tracking. Storing the selected theme in local storage throug the svelte store will probably fix the issue.

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.