Coder Social home page Coder Social logo

sspenst / thinky.gg Goto Github PK

View Code? Open in Web Editor NEW
15.0 4.0 7.0 14.33 MB

A platform dedicated to high-quality puzzle games

Home Page: https://thinky.gg

License: GNU General Public License v3.0

JavaScript 0.15% CSS 1.11% TypeScript 97.93% Dockerfile 0.06% Shell 0.01% Java 0.36% Objective-C 0.07% Objective-C++ 0.14% Swift 0.01% Ruby 0.15% C 0.01% HTML 0.01%

thinky.gg's Introduction

Thinky.gg

A platform dedicated to high-quality puzzle games.


Dev Environment

Local install

  • Run npm install
  • Create a .env file in the root directory containing the following:
JWT_SECRET=anything
LOCAL=true
NEW_RELIC_APP_NAME=dummy
NEW_RELIC_LICENSE_KEY=dummy
REVALIDATE_SECRET=whatever
  • Run npm run dev to test changes locally

Containerized setup

Required: Docker installed and running locally.

  • Run bash startDevEnv.sh in the root directory

Tests

  • Run npm test to run jest tests

Contributing

  • Find an issue to work on
  • Fork the repo
  • Test your changes locally
  • Create a pull request

Tech Stack

thinky.gg's People

Contributors

sspenst avatar k2xl avatar duceswild99 avatar snyk-bot avatar enfloo avatar cosmovibe avatar jeetee avatar timhalbert avatar aecarp avatar

Stargazers

 avatar  avatar Nikolay Kolev avatar Maxim Fainberg avatar  avatar Sven Sackers avatar Adrien KISSIE avatar Nikolay Gromin avatar  avatar  avatar Jason Caylor avatar  avatar Todd Griffin avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

thinky.gg's Issues

History of least moves

Currently the Level data model stores some info about the least moves (number, time, user). Some problems with this approach:

  • There is data duplication when setting a new record (Stat is created and Level properties are updated)
    • Could delete leastMoves, leastMovesTs, and leastMovesUserId from the Level model and replace it with a recordStat reference
    • Need to manually create stats for legacy records
  • New records clear out the previous record data
    • Could add an isRecord boolean to the Stat model
    • How to keep track of one person setting multiple records?
      • Currently there is only one stat per user per level
      • If there is one stat for every attempt, need to always search through all attempts to find the best stat
      • Could create a separate stat for each record that is immutable (vs normal user stats which can be updated)

Sorting / filtering levels

filtering:

  • input box to filter by name
  • hide completed / in progress levels

sorting:

  • by name
  • by moves
  • by points

Level attempts

  • add 'attempts' property to Stat model
  • increment attempts every time the level is completed
  • add 'Your moves' and 'Your attempts' to level info modal

Editor controls

need a way to pick a levelDataType (14 options)

  • could do 14 controls but this won't work well on mobile
  • maybe just a button that opens a modal for choosing the active block
  • maybe controls for each button but a separate modal for movables (would result in 6 controls; 9 movable options in a modal)

onClick on each square that will change to the selected data type

save button
test button (future)

Update Psychopath author notes

For example "Click on a GREEN SQUARE (which represents a level) to begin playing" is no longer accurate. Need to update the language to reflect the new site.

Dev environment

Need a way to run locally without process.env.MONGODB_URI

  • mock API layer with pre-populated test data

Consistent input styling

for all inputs:

  • add margin
  • add label
  • use color variables for input background and text
  • border / rounded edges?

Stats on profile

  • score of the user
  • logged in user's completion of the levels on the profile
  • total level count
  • hide levels/reviews if there are none

Publish levels

  • all publishing and unpublishing
    • unpublish should delete stats and allow editing
    • published can't be edited
  • make sure any world/level changes are updated on profiles and in the catalog with SWR

Profile cleanup

  • grammar: 'You have completed 1 of Andrew's level'
  • add total levels for each creator in parentheses

Reset password

  • link from #8 will land you at a reset password page
    • enter + reenter password
    • logs you in after changing the password

Icons for selected block type

Show icons in the block type modal, also show the icon in the control so you know which is active

  • delete the erase button and just add it as an option in the modal

'Create' page

  • /create endpoint
  • ability to create worlds
  • worlds shouldn't show up in the catalog if they have 0 published levels

Markdown in author notes

Psychopath 2 allowed for some tags (bold, italic, font, etc.). Should these be supported? Would need to parse the tags correctly to avoid any XSS.

Logo / favicon

The current favicon / discord logo is just an image of the ๐Ÿ…ฟ๏ธ emoji. Would be nice to come up with something more official

User creation date

  • add a 'ts' property to the User model
  • set timestamp when signing up
  • display account age on profile

Change password

  • add option to change password on account page
  • need to enter:
    • previous password
    • new password
    • new password again

Link account

Some users have been created manually (for example, levels that have been brought over from Psychopath 2 have an associated user that created the level). Psychopath 2 players may want to have access to these accounts:

  • when signing up, if their email matches an existing manually-created user, show a modal:
    • mention existing username
    • send a password reset email for this user
      • use logic from #8 and #9 for this

Discord link

  • create pathology discord
  • add link to welcome message and about modals

Page to create levels

  • endpoint is maybe /create/:worldId
  • similar format to the /create page, just creating levels instead
  • levels need to have an isDraft property so they don't show up in the catalog

Save theme

Save selected theme in local storage?

Stat timestamp

  • add ts property to Stat model
  • only update ts when the moves in the stat are lowered
  • use the same ts value for leastMovesTs

Forgot password

  • forgot password link on login page
  • forgot password page
    • email input
    • if email exists, send email with link to reset password

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.