Loading repository data…
Loading repository data…
jbxamora / repository
"progrest" is a comprehensive solution for non-profit organizations to manage their volunteer hours, donations, and impact metrics in one place. The platform provides an easy-to-use interface for tracking volunteer hours, processing donations securely through a payment gateway, and measuring the impact of different projects
As an Agile development team, We're excited to introduce "progrest", a comprehensive project management tool for non-profit organizations. Our goal is to make it easy for non-profits to manage their volunteer hours, donations, and impact metrics in one place. We will create a user-friendly interface for tracking volunteer hours, secure donation processing through a payment gateway, and measuring the impact of different projects. We will prioritize a responsive and accessible design to ensure that non-profits of all sizes can use the platform effectively. With "progrest", non-profits can focus on making a positive difference in the world, while having the tools they need to measure and communicate their impact effectively. Our Agile approach will allow me to deliver frequent updates and quickly iterate based on feedback from users.
AS A NON-PROFIT ORGANIZATION,
I want a comprehensive project management tool that can help me
manage volunteer hours, donations, and impact metrics in one place.
With "progrest," I can easily track volunteer hours,
securely process donations through a payment gateway, and measure the impact of different projects.
The user-friendly interface and responsive design will allow me
to use the platform effectively, regardless of the size of my non-profit.
"progrest" will help me focus on making a positive difference in the world,
while also providing the tools I need to measure and communicate my impact effectively.
When the database for volunteer information is created,
Then it should be able to store volunteer information accurately.
When Sequelize ORM is used to interact with the volunteer information database,
Then it should be able to retrieve and add new volunteer information efficiently.
When a GET route is implemented to retrieve volunteer information,
Then it should return accurate and up-to-date information.
When a POST route is implemented to add new volunteer information,
Then it should be able to add the information to the database accurately and efficiently.
When express-session and cookies are used to implement user authentication,
Then it should provide secure and efficient authentication for users.
When GET and POST routes are implemented to handle user log in and log out,
Then they should provide a smooth and user-friendly experience.
When the application is deployed using Heroku,
Then it should be accessible from anywhere in the world.
When the deployed application is tested,
Then it should be fully functional and free of errors.
When a basic UI is implemented using HTML, CSS, and JavaScript,
Then it should be visually appealing and easy to use.
When the UI is tested, it should be fully functional and free of errors.
Check out our app through your browser or mobile device!
https://progrest.herokuapp.com/landing
Implemented into the user model.
//check password and compare bycrypt
class User extends Model {
checkPassword(loginPw) {
return bcrypt.compareSync(loginPw, this.password);
}
}
{//hooks called before new instance created and before an instance is updated
//bcrypt to hash password
hooks: {
beforeCreate: async (newUserData) => {
newUserData.password = await bcrypt.hash(newUserData.password, 10);
return newUserData;
},
beforeUpdate: async (updatedUserData) => {
updatedUserData.password = await bcrypt.hash(updatedUserData.password, 10);
return updatedUserData;
},
Then in our homeRoutes
// Prevent non logged in users from viewing the homepage
router.get('/', withAuth, async (req, res) => {
try {
const userData = await User.findAll({
attributes: { exclude: ['password'] },
order: [['name', 'ASC']],
});
const users = userData.map((project) => project.get({ plain: true }));
console.log(users)
res.render('portal', {
users,
logged_in: req.session.logged_in,
});
} catch (err) {
res.status(500).json(err);
}
});
const sess = {
secret: 'Super secret secret',
cookie: {
maxAge: 300000,
httpOnly: true,
secure: false,
sameSite: 'strict',
},
resave: false,
saveUninitialized: true,
store: new SequelizeStore({
db: sequelize
})
};
// handle POST request to sign up a new user
router.post('/donation', async (req, res) => {
try {
const userData = await User.create(req.body);
req.session.save(() => {
// req.session.user_id = userData.id;
req.session.name = userData.name;
req.session.email = userData.email;
req.session.project_name = userData.project_name;
req.session.loggedIn = true;
res.json(userData);
// res.redirect('/portal')
});
} catch (err) {
res.status(400).json(err);
}
});
//seedDatabase using seq sync
const seedDatabase = async () => {
await sequelize.sync({ force: true });
Server-side Language: JavaScript (Node.js) Web Framework: Express.js Database Management System: MySQL Object-Relational Mapping (ORM) Tool: Sequelize ORM Front-end Technologies: HTML, CSS, JavaScript (with support from Handlebars.js for templating) Payment Gateway Integration: Stripe User Authentication Libraries: express-session, cookies Deployment Platform: Heroku
Contributions are always welcome!
See contributing.md for ways to get started.
Please adhere to this project's code of conduct.
"progrest" is a comprehensive project management tool for non-profit organizations.
"progrest" is designed for non-profit organizations of all sizes who want to track volunteer hours, donations, and impact metrics in one place.
"progrest" is a web-based application that can be accessed through a web browser.
"progrest" allows you to track volunteer hours, donations, and impact metrics for different projects.
Volunteer information can be added to "progrest" through the user-friendly interface.
Yes, donations can be securely processed through "progrest".
"progrest" will eventaully integrate with popular payment gateways such as Stripe.
Donation information can be viewed in "progrest" through the user-friendly interface.
Yes, volunteer and donation metrics can be viewed in one place on the portal page through "progrest".
User authentication in "progrest" is implemented using express-session and cookies.
Yes, data in "progrest" is securely stored in a database.
"progrest" will be updated frequently based on user feedback and needs.
"progrest" is designed for non-profit organizations and is offered free of charge.
For support with "progrest", please contact the development team through the repository or email.