A crowd sourced bank of stories that can be used by language teachers who utilize the Comprehensible Input teaching method. Its goal is to allow teachers to share adapted stories with one another, saving them precious class planning time.
Prior to my career as a developer, I worked as a language teacher using a method called Comprehensible Input (CI). CI is based around stories and storytelling. Teachers use all sorts of stories from folktales to ones they made up. The stories are adapted into language that the student's can understand, requiring the teacher to translate them into simpler vocabulary.
As a teacher, this was something I spent a ton of time doing. With Story Sourcer, teachers can share their adapted stories with one another. The stories can then be filtered by various criteria such as the target age of students, the story's source, or the length of the story to ensure they can find stories that meet their student's needs.
- Bcrypt Encoding
- Sequelize
- PostgreSQL
- Embedded JavaScript
- Express
- HTML
- Bootstrap
- CSS
Deployed@Story Sourcer
Sign-in and/or Sign-up.
- Ability to upload images.
- Allow users to save and favorite stories.
- Add admin login capabilities including deleting stories.
- User profiles.
- Ability to search by creator.
-
Time managing just one(1) week to complete in a bootcamp setting.
-
Learning to upload images. I initially tried to upload images to the database directly, which was not very efficient. Since I've learned to use cloud based photo storage and instead upload a link to the database. I look forward to implementing this into this project.
-
Developing the filter function, allowing a user to search based on multiple criteria. Snippet below.
`app.post('/search', async function(req, res){ const {theTitle, theAge, theMood, theLength, theLevel, theSource} = req.body;` let results = await Stories.findAll({ where: { [Sequelize.Op.and]: [ {title: {[Sequelize.Op.iLike]:'%' + theTitle + '%'}}, {age: {[Sequelize.Op.iLike]:'%' + theAge + '%'}}, {source: {[Sequelize.Op.iLike]:'%' + theSource + '%'}}, {mood: {[Sequelize.Op.iLike]:'%' + theMood + '%'}}, {length: {[Sequelize.Op.iLike]:'%' + theLength + '%'}}, {level: {[Sequelize.Op.iLike]:'%' + theLevel + '%'}} ]}}) res.render("search", {results}) })`
- Solidifying my understanding of postgreSQL, Express, and embedded JavaScript
- Using a framework for the design for the first time.
- Incorporating user and password authentication.