Yesterlinks is a database of links to unique or interesting websites.
This is a project, in its infancy, designed to be a directory of links of various websites as well as a 'random page' button that loads a link at random.
It's currently being designed and written with PHP/SQL and Javascript.
If you want to contribute to this project, please go ahead! If you're not tech-savvy I'll be including a description of how it works, and welcome all ideas.
The goal of this project is to create a database of links to cool or interesting lesser-known websites. It is meant to encourage people to "bloomscroll" - the opposite of doomscrolling.
- A report system which allows users to report a link
- Category checkbox filters
- Search filter
- Tagging system (thank you @amethystcube !!!!)
- JSON file creation when website is changed
- 'Surf' bookmarket link added (drag it to your bookmarks bar and click to surf!)
You can play with a live demo at https://links.yesterweb.org/
- Home:
/index.php
- public, view only; this is the main page
- Submit:
/submit-a-link.html
- public, anti-bot: submit a link to the directory
- Admin:
/admin
- requires a password: the place to edit/delete/approve entries
- Login:
/login
- public: enter credentials for access to
/admin
- public: enter credentials for access to
The database is the back-end which stores the data; it has the following tables:
Each row of the websites
table has six columns:
id
: unique identifier for each rowtitle
: website titleurl
: website URLdescr
: a description for the websitecategory
: give the site a categorypending
: boolean; toggle visibility in the public list0
: false, will be visible1
: true, will not be visible
Each row of the tags
table has two columns:
id
: unique identifier for each rowname
: the name of the tag
Each row of the taglist
table has 3 columns:
id
: unique identifier for each rowtag_id
: the ID of the tag being addedsite_id
: the ID of the site being tagged
This table is added to the results using a JOIN
clause, allowing the tags for each site to be listed in the table
Each row of the votelist
table has 5 columns:
id
: unique identifier for each rowtime_cast
: a timestamp of when the vote was cast (used for vote weighting)voter_id
: a hash indicating who cast the votesite_id
: the ID of the site for which the vote was castvote
: a boolean indicating the type of vote0
: downvote (disabled)1
: upvote/recommend
Each row of the users
table has eight columns:
id
: unique identifier for each rowdatetime
: date of registrationemail
: user emailname
: user nameusername
: usernamepassword
: password encoded with bcrypthash
: password encrypted with MD5active
: whether or not the account is active (0 or 1)
Each row of the password_reset_temp
table has three columns:
username
: usernamekey
: validation key that is appended to the email linkexpDate
: date the validation key expires
- Download a
.zip
of the repo orgit clone
it. - Create a database and import the schema from
sadness_websurferdb.sql
- Update the
config.php
file:$host
: (in most cases, you can leave this one alone)$user
: the account name you set for access to the database$password
: the password for the account name you just listed$dbname
: the name of the database with the directory tables
- If you visit
index.php
, you should see the directory table!
Don't know how to code? No problem! We are looking for all sorts of assistance here. If you play around with the demo and you have some feedback, please reach out! You can open an Issue on here, drop by the Discord server, or email me at [email protected].