60 Seconds is a web-based application designed to record short, daily, audio recording segments. It will be compatible with both mobile devices, and desktop/laptop computers via a web browser. Daily, a user will record audio segments up to 60 Seconds in length. Their daily recording time is ‘pooled’ similar to ‘swipes’ on Tinder. Once the user exceeds their daily limit of 60 Seconds, they will be unable to record more content. A user WILL be able to record multiple segments daily, so long total recording time does not exceed 60 Seconds.
Once audio segments are recorded, they’ll be available for the user to review prior to uploading (similar to Snapchat’s review of photo/video before sending). Once a recording is made, the application will automatically include default tags that will be stored with the recording. These tags will be produced based on the recording’s metadata (location, date, time, length.) While the user reviews their audio segment, a description of the recording can be included. Additionally, the application will produce a speech-to-text transcription of the recording’s contents, which can be edited. When the user uploads the audio recording, this data will be stored alongside it in the database.
Aaron Scofield, Ryan Hardison, Xu Lyu, Zachary Preston, Zack Waxler
- Currently running on a live server, rather than the localhost, visit 60seconds.io
- A fully functional register page, as well as a page to edit user profile information (name, school, occupation, etc.)
- A speech-to-text transcription service
- A fully functional calendar interface, congruent with a live Calendar
- A back end API producing Calendar events based on user input via the transcription
- Tagging functionality, users can add custom tags to audio recordings
- Taggings sometimes do not show up with the recording
- The tags must be added BEFORE recordings audio
- The user must hit STOP recording for it to be sent to the backend
- Transcriptions sometimes are not accurate with the user input (likely due to the microphone)
- The user's profile picture does not save to the backend
The project is currently live on https://60seconds.io. You can register an account and use all functionalities from there. Currently only Chrome is supported as it has not been tested on other browsers.
- Install npm
- Run the command
git clone https://github.com/Capstone-Projects-2022-Spring/project-60seconds.git - Navigate to the
project-60seconds/directory, then run the commandnpm install
-
Run the command
expo start:web --https -
You can then visit https://localhost:19002 to view the project in a web browser (although functionality will be fairly limited unless the backend API server is running, see below).
- Following these two tutorials (assuming you're on Ubuntu 20.04), install and configure Apache and Let's Encrypt. 60 Seconds uses an authentication mechanism that requires HTTPS to be configured on both the API server and the frontend server.
https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-20-04#step-5-%E2%80%94-setting-up-virtual-hosts-recommended https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-20-04
- Install npm
- Run the command
git clone https://github.com/Capstone-Projects-2022-Spring/project-60seconds.git - Navigate to the
project-60seconds/directory, then run the commandnpm install - Recursively search through the project and replace all instances of 'https://api.60seconds.io' with the API server of your choice (again, must be over HTTPS).
- Run the command
./build.sh
- Run the command
sudo service apache2 start. This should bring the HTTPS server up if everything is configured correctly.
- Install npm
- Run the command
git clone https://github.com/Capstone-Projects-2022-Spring/project-60seconds.git -b backend - Navigate to the
server/directory, then run the commandnpm install - Using Let's Encrypt, install an SSL certificate
- Modify the paths in
auth.jsto point to your SSL certificate - Create a MySQL server and note the username, password, and host
- Create a
creds.jsonfile in the server directory with the following format:
{
dbUser: "xxx",
dbPass: "xxx",
sessionSecret: "xxx"
}
- Modify
conf.jsonto correctly set your host, database host, and primary database name
- Install
foreverusingnpm install foreverif it is not already installed - Modify
conf.jsonand set the mode to "development" instead of "production". - Start the server as a daemon with
./start.sh
-
- Install
foreverusingnpm install foreverif it is not already installed
- Install
- Modify
conf.jsonand set the mode to "production" instead of "development". - You may need to tweak the
originvalue inserver.jsif you are using a production frontend server. Make sure it's set to the hostname of the frontend server, otherwise you will not be able to authenticate. - Start the server as a daemon with
./start.sh