peeley / lucy Goto Github PK
View Code? Open in Web Editor NEWProject Lucy, an AAC application
License: GNU General Public License v3.0
Project Lucy, an AAC application
License: GNU General Public License v3.0
The site should have transitions when moving from welcome -> login, welcome -> create account, welcome -> guest, etc.
bonus points if you figure out how to do a star wipe
settings
tableGET
and POST
routes to routes/web.php
POST
route that creates usersGET
route that returns viewWe currently allow anyone on the website to use the "guest" board, with board id 1. we want users to also "own" a default board when they first create an account so they aren't starting from scratch. however, we don't want users to edit this default board and affect others' default boards.
as such, when a user account is created, we need to create a copy of the default board (board id 1) and all the words on it that they own and are allowed to modify.
this can probably happen in the CreateAccountController. I haven't tried it, but I believe models can be replicated like it says in the docs here.
/boards/<board id>
/create-account
looks the same as the screenshot in PA3from the BoardController, serialize the board and all its folders recursively to a JSON blob that can be sent to the frontend via the HTTP API.
this can probably be implemented as a method on the Board/Folder models, but might also be a good candidate for the Tile abstract class.
/words/{id}
)/words/user/{id}
)This would be the functionality for a user to have their own board and to add words to it
helpful links:
https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API
https://www.section.io/engineering-education/text-to-speech-in-javascript/
Create CSS styling to match /create-account
The Speech synthesis interface of the Web Speech API is mysteriously broken on Firefox for Linux. According to these bug reports, it's something to do with an implicit dependency on speech-dispatcher
.
Speech synthesis still works fine on Chrome, but this is a pain in the ass and might bite us when we start supporting other devices. Might want to look for a solution or workaround if so.
Create a guided use system that will automatically activate after a certain amount of time (users can adjust this).
The guided use system itself will guide the user on how to use the board to form/speak a sentence with the tiles by highlighting certain parts of the screen (maybe also add voice and text to supplement the guide).
we should probably have something more modern in terms of fonts for the website. whatever we choose should be available by default across all common browsers (Chrome, Firefox, Safari)
probably a one-line change in public/css/app.css
.
when a user presses the Last Folder
button when they're on the base board screen, the board crashes and goes blank. this should get fixed so that the Last Folder
button is disabled or does nothing when the user is already on the base board screen.
there's quite a bit of duplication throughout the frontend, we can move it all into a single place using layouts and components.
blade.php
file is the relevant page's contentWhen a user presses and holds on a tile, a modal should popup giving users the options to delete or edit the tile that was pressed on.
Editing gives the user the option to change the text/color/icon of that tile, and a button to save changes.
Deleting should trigger a confirmation popup that, when confirmed, deletes that tile from that space on the board. Not sure if we want to delete the tile totally (like remove the word from the vocabulary and all other instances of it on the board), so I guess use your discretion.
We need some CSS styling for the home view.
This is the view the user sees when they log in.
Pressing the back button in a board while logged in will bring you to the welcome screen instead of the home screen.
on the board screen, when users click a blank tile, a menu should pop up to create a new word.
the menu should have a field for text, color, icon (as a file to upload), and a button to save the word.
the word should be added to the board in the space that the user initially clicked on.
see project assignment 3 for UI designs
add a GET
route to routes/web.php
create a LoginController if one doesn't exist
add a function to LoginController to return the login view
implement screenshot in Project Assignment 3
does not need to be ReactJS
boards
table & migrationit'd be silly to make a whole new project website when our project is a website, so we can just have an About Us
link/tab somewhere that directs to a page with all the assignment requirements on it.
see Canvas assignment for page contents. we can probably just reuse content from last semester's project assignments.
same functionality as clicking the Speak
button from the board screen, but when a user clicks on the sentence bar instead.
This would be getting the back button on the same row as the other buttons, putting the back folder in line with the sentence bar, and making the spacing of them more consistent and visually appealing
GitHub Actions are pretty handy to have for a project - every time we commit or make a pull request, arbitrary scripts are run that can do stuff like check syntax, enforce formatting, run tests, etc. There's probably some default ones for PHP that would work.
uhhh just do what this says, I remember setting this up is quite a process
When a user is on the board screen, they should be able to drag-and-drop tiles to edit the tiles' placement on the board. This should be saved to the database, so that the tiles' updated positions persist after reloading the page.
there probably needs to be a Controller method for this functionality. a good place might be in BoardController, since we're just editing the tiles attached to that board rather than every instance of those tiles (if it's attached to multiple boards/folders).
After logging in, a user should be taken to the home screen where they will see a list of all the boards they own.
A button should exist on the home screen for users to create a new board. The button should cause a modal to appear, where users can enter information about their new board. Boards can be created as a copy of an existing board they own (or default board), or be blank with a predetermined name, width, and height.
Preexisting boards should have an edit
button next to them on the home screen. When pressed, a modal will appear where users can enter a new name, height, width, etc. for their board.
Like editing, a button should appear next to preexisting boards in the home screen. Pressing the button will cause a confirmation popup to appear. When the user confirms, the board should be deleted from their account.
In our public/css/app.css
there's quite a bit of duplicated code that we could cut down on, and most of our HTML elements only utilize one class at a time. This might start to be a problem as the project expands and the amount of elements we need to style increases.
id
rather than class
for CSS that is unique to a single elementbackground-color: lightgoldenrodyellow
, border-radius: 5px
, etc.font-family
) to body
or html
All buttons/tiles should have an indication when they are hovered over, to indicate that they are interactive
/boards/{id}
)
/boards
)/boards
)add a GET
route to routes/web.php
create a HomeController, if one doesn't exist
add a function to HomeController to return the view
just implement screenshot in Project Assignment 2
does not need to be ReactJS/interactive
boards
tablewords
tabledocs on seeding:
https://laravel.com/docs/8.x/seeding
Create CSS styling for /user-settings, to match /create-account
Guests can manipulate the default board using the edit/delete tile feature (probably the create tile also).
When a user is inside of a folder tree on the board, there should be some kind of indication. My idea is to have something like
Board Name > Foods > Orange Foods
display under the sentence bar but above the tiles on the board screen, where "Foods", "Orange Foods", etc. are the names of folders. No need to display anything when a user is not within a folder tree.
folderPath
property to the Board.js
React Component state, an array should be finefolderPath
folderPath
folderPath
above the tilesphp artisan make:model User
users
table & migrationcreate static placeholder of screenshot from PA3
does not need to be ReactJS
installation and setup is an unholy pain in the ass and containerization would make deployment ezpz.
write a docker-compose.yml
file with the following services:
docs:
docker compose
docker
words
table & migrationboard views should be populated with associated tile objects
clicking on words should add word to sentence
clicking on folder should open folder (which just looks like a board)
have a back button to go back to previous board/folder
will be in ReactJS
This would be a setting that would change the background to a dark color and the text that is on the background (not in a button) to a light color
since our project website will just be a page on the existing lucy project, we need to get the project up and running on a server.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.