Coder Social home page Coder Social logo

control-net / vr-retreat Goto Github PK

View Code? Open in Web Editor NEW
6.0 6.0 1.0 2.95 MB

Challenge yourself to quit VRChat for a month while completing challenges and keeping track of your and your friends' progress.

Home Page: https://vrstop.health/

License: GNU Affero General Public License v3.0

C# 72.01% JavaScript 0.16% HTML 22.07% CSS 5.77%
addiction vrchat

vr-retreat's People

Contributors

alex-451 avatar fpindej avatar petrspelos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

alex-451

vr-retreat's Issues

Background Worker timestamped logs

Summary

The Background worker currently generates bgworker.log and overwrites the old data in it. Ideally, we'd get logs that are timestamped like this: bgworker-2021-12-29-17-30.log for 12/29/2021 5:30 PM.

Implementation Notes

This can be achieved in the BG worker's Program.cs

Want to work on this issue?

❀️ Amazing! Let us know in the comments bellow so that we can assign this issue to you. πŸŽ‰

No stress, though, feel free to ask for help with any clarifications or problems you may encounter along the way. We're here to help.

Registration & Login

Summary

The idea for our registration/login is to only require a username and password. We want to get rid of the email, since we don't really need it and we'll save some time by not having to implement an emailing service.

Implementation notes

This needs to be configured in EF Core and its Identity Framework

I've been offline for a very very long time.

Describe the bug
No words can explain how long I've last used VRChat.
image

To Reproduce
Steps to reproduce the behavior:

  1. Register for the first time and link a VRChat account
  2. There you go.

Expected behavior
Last logged in just now, or something similar.

User Account Settings

Summary

A set of Use Cases for the following actions:

  • Completely Delete the User Account

  • Unlink a VRChat account

  • Return a JSON with all of the current user's data

  • + Settings Page itself

Implementation Notes

For account deletion, it's preferable to use the UserManager<VrRetreatUser> found in our WebApp. But be careful not to make a cyclic dependency.

VRChat API complications

API Wrapper Issue

In order to successfully deploy with a NuGet dependency, we need to wait for the following issue to be resolved:

vrchatapi/vrchatapi-csharp#5

If the issue does not get resolved until our Release (end of December), let's just fork it and fix it ourselves. We don't really have to publish a NuGet of our own, it'll be enough as a sub-repository (git submodule) as a build dependency.

  • Wait for a patch

LastLoginTime access

In order to get the information about the last login, the user has to friend our backend puppet account.

This is not really a problem, since this can beautifully act as verification. =)

Start Challenge

Summary

Whenever a user has a linked VRChat account they are presented with the StartChallenge view.

This view should look as illustrated in the page's design document.

Once the user clicks this button the Start Challenge use case should execute.

Start Challenge Use Case

The use case requires a new bool IsParticipating property to be created in VrRetreatUser.

  • Ensure the user has a linked VRChat account and hasn't failed the challenge
  • Update their VrChatLastLogin value
  • Set their IsParticipating property to true
  • Redirect back to Index

Any plans on finishing this?

I'd like to contribute if there is. Due to the simplicity of the website it could be finished within the one-week deadline.

The only issue would be completing a decent UI by then, but you could aim for an extremely simple, large, and bold UI. and build up on statistics later.

Implement the Website's Footer

Summary

In order to be fully compliant with AGPL, we're going to need to add a website footer with the following information:

image

🎨 You can find the latest Figma design HERE.

Links

Additional Notes

The footer should be implemented in out _Layout.cshtml file so that it applies to all pages.

Feel free to change the look of the footer if you have a better idea of what it could look like. The Figma design is more of a content suggestion. ☺️

Want to work on this issue?

❀️ Amazing! Let us know in the comments bellow so that we can assign this issue to you. πŸŽ‰

No stress, though, feel free to ask for help with any clarifications or problems you may encounter along the way. We're here to help.

VRC Account Linking process

Summary

This is an implementation of our VRChat account linking process. This utilizes the VRChat API.

Progress

  • Claim a username use case
  • Verify friend status use case
  • Verify bio code use case
  • Integrate into the app (includes HTML/CSS)

Process

Stage 1

  1. Ask a user for their VRChat display name
  2. Verify the account's existence
    • Abort stage if account does not exist
    • Abort stage if another user has this account already linked*
  • we might not want to do that if we never provide an account recovery system. It could very well be that a successful account linking would unlink any other existing link

Stage 2

  1. Send the user a friend request and wait for them to accept
  2. The user can manually "Check Verification Status" with a cooldown to verify the friend request has been accepted

Stage 3

  1. Generate a short unique code for the user to put into their bio to finalize their link
  2. The user can manually "Check Verification Status" with a cooldown to verify their bio contains the required code

Stage 4

Officially confirming the challenge

Address Compilation Warnings

Summary

Our build outputs a fair number of warnings we should address. Mostly async methods without an await or nullability problems. Shouldn't be a big deal, but should be addressed.

You can for example see the annotations in one of our builds

Want to work on this issue?

❀️ Amazing! Let us know in the comments bellow so that we can assign this issue to you. πŸŽ‰

No stress, though, feel free to ask for help with any clarifications or problems you may encounter along the way. We're here to help.

Participants List sort

Summary

Currently, the participants list is all over the place. We should apply a two factor sort:

  • Sort by the offline duration
  • Put failed users at the bottom of the list

Want to work on this issue?

❀️ Amazing! Let us know in the comments bellow so that we can assign this issue to you. πŸŽ‰

No stress, though, feel free to ask for help with any clarifications or problems you may encounter along the way. We're here to help.

User Following

Summary

The user should be able to follow a person by providing their VrChat username.

Implementation Details

On the ASP.NET side we should implement a standard one to many relationship

  • ⚠️ It's important to test the account deletion. Especially if the account you're deleting is being followed by someone.

User Story

  • Go to dashboard
  • Click on "Add a friend"
  • Type in their VRChat display name
  • They appear on the dashboard

Daily Challenges

What's a stretch goal?

This is something we only implement if we finished everything else.

Summary

In order to keep users busy and not thinking about VRChat, we can display a daily challenge on their dashboard.

Users are then encouraged to finish this challenge and if they want to share a picture of it on social media.

I don't think we're going to have enough time for image upload and profiles, so a simple hashtag as a means of sharing will do.

What needs to be done

Generate 31 (each day of January) challenges. Every challenge has 3 tasks (easy, medium, hard) for a user to pick from. That means we've gotta write 93 tasks. They don't have to be randomly picked and they are the same for every user.

The challenges should appear on the Dashboard and have no way of marking them completed.

2FA

Is your feature request related to a problem? Please describe.
Adding 2FA options to the Settings to make accounts extra secure

Describe the solution you'd like
Being able to add multiple 2fa methods (U2F, TOTP)

Additional context
Its great to be able to add multiple authentication keys + totp in case a user uses a password manager like bitwarden plus something like a Yubikey

Application Design (Figma)

Summary

The goal is to implement the main screen (logged in state) according to the design specifications

Design Document

The design document can be found here

Design Progress

  • Dashboard Page (Logged in user with a Linked VRChat account)
  • VRChat Account Linking
  • Settings Page
  • Login Page
  • Registration Page
  • Landing Page

Unlinked VRC account home page

Summary

When a user logs in and doesn't have a linked VRChat account, we want them to see a page with an explanation and a button to proceed with their account linking.

Participants list alignment

Summary

The Participants list on the Dashboard is misaligned because it's centered relative to each user-plate's width. All of these should be left-aligned.

image

Want to work on this issue?

❀️ Amazing! Let us know in the comments bellow so that we can assign this issue to you. πŸŽ‰

No stress, though, feel free to ask for help with any clarifications or problems you may encounter along the way. We're here to help.

Create the Dashboard UI

Summary

At this point, the route /home/dashboard (temporary route) is configured with a mocked DashboardViewModel so that the UI can be developed.

The Dashboard page design can be found in this Figma document.

Additional Details

Feel free to adjust the model, as well as the UI, it's a suggestion more than a rule.

Confirmation Dialog/Modal

Is your feature request related to a problem? Please describe.
There should be a confirmation modal after initiating a dangerous action. (Deleting the account for example)

Describe the solution you'd like
Delete Account? -> Confirmation Dialog with Yes and Cancel

Describe alternatives you've considered
Maybe having to tick a checkbox or having to type in the correct account name before being able to delete the account. (Like Githubs repository deletion)

Additional context
Bootstrap Modals

Extra hCaptcha validation error

Describe the bug
When submitting a Registration form without filling out hCaptcha, an extra The Hostname field is required. validation error appears in the list.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'Register'
  2. Fill in a valid information but leave the hCaptcha untouched
  3. Submit the form
  4. See error

Expected behavior
The The Hostname field is required. validation message should either be reworded to "Please fill in hCaptcha" or removed altogether.

Screenshots

image

Implementation Notes
We're using some guy's library for hCaptcha integration, if the lib doesn't allow us to change this message, we might have to reimplement hCaptcha in some way.

OPTIONALLY, we could just front-end hack it with some JavaScript, but let's leave that as a last resort.

Cleanup Login / Registration / Main Page

Summary

After some hard time getting registrations to work, the state of the WebApp suffers.

We're gonna have to clean it up a little bit.

Implemented according to design

  • Landing Page
  • Registration Page
  • Login Page

Finalized VRChat API

Summary

Everything we're going to need for our #6 and other VRChat-based interactions needs to be implemented in the IVrChat interface.

Handle Background Worker's exceptions

Summary

In case the background worker encounters and error, it should output it into its log instead of closing.

Alternatively the log file name could be appended with -failed.log to better recognize this scenario.

A general try/catch could work. Alternatively we can hook into the UnhandledException event of the runtime to be a bit more sure.

The exception should also be printed in the log itself.

Notes

Careful about exceptions that are coming from failed attempt at logging.

Want to work on this issue?

❀️ Amazing! Let us know in the comments bellow so that we can assign this issue to you. πŸŽ‰

No stress, though, feel free to ask for help with any clarifications or problems you may encounter along the way. We're here to help.

Background Worker

Summary

The idea is that on our server, we'll invoke this console application using cron periodically.

The worker should attempt to respect the officially stated "1 VRChat API query call per minute" limitation.

When the worker is launched by our cron routine, it should go through all of our registered users with linked VRChat accounts and check with the VRChat API if their VrChatLastLoggin has changed and set the FailedChallenge property accordingly.

Implementation Notes

A new VrRetreat.Worker console project needs to be made.

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.