Coder Social home page Coder Social logo

jringeisen / venture Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 52.59 MB

Venture offers personalized, AI-enhanced learning experiences tailored for your child's unique educational journey.

Home Page: https://learnwithventure.com

PHP 42.31% JavaScript 0.48% CSS 0.03% Vue 56.97% Blade 0.21%
homeschooling laravel openai php vue

venture's Introduction

Venture Logo

Venture - AI-Enhanced Homeschooling Platform

Introduction

Welcome to Venture, a pioneering platform in the realm of homeschooling. At the heart of Venture lies a mission to transform how students learn at home. Leveraging the power of Artificial Intelligence (AI), Venture offers an unparalleled, personalized learning experience for each student.

Key Features

  • AI-Driven Customization: Venture integrates advanced AI to tailor the learning experience, adapting to each student's unique learning style, pace, and preferences.
  • Comprehensive Curriculum: Our platform covers a wide range of subjects, ensuring a well-rounded educational journey.
  • Interactive Learning: With the use of Laravel, InertiaJS, VueJS, and Tailwind CSS, Venture provides a dynamic, responsive, and engaging user interface.
  • Expert Support: Access to a network of educational experts to guide and assist in the homeschooling journey.

Getting Started

Installation:

  • First, pull down the github repo and make sure to run php artisan composer install.
  • Next, you'll need to run php artisan migrate --seed. This will create your tables and seed them.
    • This will create a user of [email protected] which you can login with using password as the password.
    • It will also create a student with a username of teststudent and a password of password.
  • Finally, you'll need to run npm install && npm run dev.

Configuration:

  • You'll need to set the following variables in your .env file.
    • OPENAI_API_KEY
    • OPENAI_ORGANIZATION
    • STRIPE_KEY
    • STRIPE_SECRET
    • STRIPE_WEBHOOK_SECRET
    • STRIPE_MONTHLY_PRICE
    • STRIPE_ANNUAL_PRICE
    • NOVA_LICENSE_KEY

Notes: Most of the emails that are sent are sent via the queue system so you'll need to make sure to run php artisan queue:work if your QUEUE_CONNECTION variable is set to database.

Contribution

Venture is a student-led initiative. We welcome contributions from the community. Whether you're a developer, an educator, or a student, your insights and code contributions can help shape the future of homeschooling.

Support

For support, queries, or feedback, please contact us at [email protected]. Your input is invaluable in making Venture a better platform for all.

Releases

Releases are created in Github Actions via tag v.*. Keep in mind that before a release is created via a tag push, the CHANGELOG.md will have to be updated. Things to keep in mind:

  1. The changelog format is based on Keep a Changelog.
  2. This project adheres to Semantic Versioning.

venture's People

Contributors

jringeisen avatar justinwerner avatar

Stargazers

 avatar

Watchers

 avatar  avatar

venture's Issues

Create a Blog

Being that we're using Laravel Nova, half of this is completed we just need to create the resources for a Blog. Elena would like this so that she can start creating blog posts and hopefully get some organic traffic via SEO. To start this is going to be a simple blog. I envision it to have a Blog and a Category model and within the Blog model we will need some columns to store data for SEO purposes.

Welcome Email

We need to implement a welcome email that's sent to new users. I'm thinking this should be sent 5 minutes after signing up. In this email we should introduce ourselves and give a quick run down on how to use Venture and let the user know that we are here for them if they need us.

Google Tag for Google Ads / Analytics

Option 1: Install a tracking ID through your hosting service or commerce platform

Sign in to your website builder, web hosting service, or commerce platform and paste your tracking ID into the analytics section.
G-Z8XQ78QPDD

Option 2: Install a Google tag in your website code
Paste your Google tag before the closing tag on every page of your website you want to track.

<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-Z8XQ78QPDD">
</script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-Z8XQ78QPDD');
</script>

Implement Sentry

We need to remove the Flare implementation and implement Sentry for error tracking.

Logout button doesn't work

Once logged in, the log out button bottom left doesn't work but cycles the 'question' asked card. If I spam logout it hits me with a 419 error.

image

Attendance and Time Tracking

We need to implement the ability to track a students attendance. Simply logging in shouldn't count toward attendance, we need to come up with a solution maybe something like the student logged in and asked a minimum of 5 questions then that would count towards attendance for the day. Or maybe we need to do it based on the amount of time they spent on Venture so for instance, if they spend 30+ minutes on Venture for the day that counts towards their attendance.

As for time tracking we need to implement a way to track how much time a student spends on Venture, this way the parents can see an overview of what their kids are learning along with how long they're spending on the platform.

Refactor Student Seeder

We need to refactor the student seeder to create a student in the Users table. And we need to remove the PortStudentsToUsersSeeder as this seeder is no longer needed.

Improve Time Tracking Feature

My kids have been logging 10+ hours via the time tracking feature. After looking at the codebase we are persisting the ActiveTime within the store method which is being called when the browser is closed. My kids and I'm sure many others tend to leave their browsers open, so we need another way to persist the ActiveTime. I'm thinking we devise a way to track inactivity. I had a little help with AI on this one. Let me know what you think @justinwerner.

// inactivity.js
import { onMounted, onUnmounted, ref } from 'vue';

export function useInactivity(timeoutDuration = 600000) { // Default timeout set to 10 minutes
    let timeout = ref(null);

    const resetTimer = () => {
        clearTimeout(timeout.value);
        timeout.value = setTimeout(() => {
            // Perform actions on inactivity
            console.log("User is inactive");
            // You can emit an event or call a method here
        }, timeoutDuration);
    };

    onMounted(() => {
        document.addEventListener('mousemove', resetTimer);
        document.addEventListener('keypress', resetTimer);
        document.addEventListener('scroll', resetTimer);
        document.addEventListener('mousedown', resetTimer);
        document.addEventListener('touchstart', resetTimer);
        document.addEventListener('click', resetTimer);
        document.addEventListener('keydown', resetTimer);

        resetTimer(); // Initialize timer on mount
    });

    onUnmounted(() => {
        clearTimeout(timeout.value);
        document.removeEventListener('mousemove', resetTimer);
        document.removeEventListener('keypress', resetTimer);
        document.removeEventListener('scroll', resetTimer);
        document.removeEventListener('mousedown', resetTimer);
        document.removeEventListener('touchstart', resetTimer);
        document.removeEventListener('click', resetTimer);
        document.removeEventListener('keydown', resetTimer);
    });

    return { resetTimer };
}

In the AuthenticatedLayout component we can do this:

<script setup>
import { useInactivity } from './inactivity.js';

// Set the timeout duration as needed, or use the default (10 minutes)
const { resetTimer } = useInactivity(600000); // 10 minutes
</script>

Enhancements

There are some enhancements that need to be made, for instance, I'd like to be using persistent layouts through the code base so I need to go in and adjust some of the layouts.

Refactor Student Model

In order to simplify things we need to make a refactor. We need to make both Parents and Students, Users. We can create a parent_id column on the users table so that when a parent adds a student we can reference the parent that is assigned to those students.

We will also need to make changes elsewhere, for instance, we have a students route file with all the routes for the students. Because a student will be a user we no longer need to separate routes.

I would like to keep the dashboards separate, so we will need to adjust or create a middleware to check the user type and if its a parent redirect to the parent portal and if its a student redirect to the student portal. I like this approach over having everyone in one component and having if statements to show and hide based on the user type.

We will need to remove any reference to the Student model and migrate the Student data to the Users model.

The Student tests can be removed and we'll need to write some tests for Users.

Admin Panel Improvements

I'd like to make some improvements to the UI of the Nova Admin Panel:

  • Improve the theme to resemble our brand.
  • Update the logo to use our logo (we have an svg in the codebase js/Components/ApplicationLogo.vue).
  • Create a Created Resources Dashboard that will have trend cards showing the creation of different resources like PromptQuestions, PromptAnswers. This will give us an idea on how much the main functionality is being used.

Change Pricing

Elena wants the pricing structure to be simplified. She wants to go with $20/student.

Add Laravel Nova Admin Panel

We need an admin panel so I'll add Laravel Nova which will allow us to manage users and impersonate their accounts so we can troubleshoot when an issue arises.

Update Pricing Section of Landing Page

We need to update the pricing section of the landing page to look something like below. It should match our branding and and the text should be updated to reflect our pricing.
Image from iOS

Add All Option For Subjects On Student Layout

We need to add an "All" option at the top of the subjects on the student layout. This way we can see a list of all the questions the students asked. Right now you have to click through each subject to see the questions.

Feedback Tracker

We need to implement a feedback tracker. The feedback tracker should allow the user to submit feedback while logged in. This will help us understand our users needs and any issues they are having.

Implement Opt-In

We need to implement an opt-in on the landing page. The opt-in should be an input that accepts an email address and stores it in the database. When someone opts in they should receive a digital download of a planner.

Refactor the OpenAI Service Class

We need to refactor the OpenAI Service class to something like Assistant so that we can swap out implementations whenever necessary. I don't want to be stuck with OpenAI if something happens and we need to switch to say Grok.

Also, down the road I'd like to implement a feature that will allow the user to choose which AI model they use.

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.