Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/empobla/gira
A fullstack website created for a multi-university college club where users can publish articles and events with images and videos, send massive emails to mailing lists, and accept donations.
https://github.com/empobla/gira
expressjs mongodb nodejs
Last synced: about 1 month ago
JSON representation
A fullstack website created for a multi-university college club where users can publish articles and events with images and videos, send massive emails to mailing lists, and accept donations.
- Host: GitHub
- URL: https://github.com/empobla/gira
- Owner: empobla
- Created: 2020-11-09T08:08:51.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2023-01-25T23:31:13.000Z (almost 2 years ago)
- Last Synced: 2023-02-26T17:25:29.948Z (almost 2 years ago)
- Topics: expressjs, mongodb, nodejs
- Language: JavaScript
- Homepage: https://gira.demo.emilioppv.com
- Size: 88.1 MB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[![Portfolio][moreinfo-shield]][moreinfo-url]
[![LinkedIn][linkedin-shield]][linkedin-url]
Gira
Gira is a fullstack website created for a multi-university college club where users can publish articles and events with images and videos, send massive emails to mailing lists, and accept donations.
·
View Demo
·
Table of Contents
## About The Project
[![Gira Screen Shot][product-screenshot]](https://gira.demo.emilioppv.com)
Gira is a fullstack website created for a college club that exists in several universities in Mexico. In this website, users can publish articles with images, create events with images and videos, send massive emails to mailing lists, accept donations through PayPal's API, and register for events that this club holds. In addition, users can view posted classes and courses made available by Gira's administrative team.
### Built With
[![MongoDB][MongoDB]][Mongo-url]
[![Express][Express.js]][Express-url]
[![Pug][Pug.js]][Pug-url]
[![Node][Node.js]][Node-url]
[![AWS][AWS]][AWS-url]## Getting Started
To get a local copy up and running follow these simple example steps.
### Prerequisites
This project requires Node.js, MongoDB, and several AWS Services. A MongoDB server must be set up locally or in the cloud before using this project, and an AWS IAM account must be setup in AWS with access keys and permissions to use AWS SES and AWS S3.
* Install npm:
```sh
npm install npm@latest -g
```
* Install [MongoDB Community Server][MongoDB-community-url] or set up [MongoDB Atlas][MongoDB-atlas-url]. Instructions for MongoDB Community Server can be found [here][MongoDB-instructions-url].
* Setup an AWS IAM account with access keys and permissions to use AWS SES and AWS S3. Instructions can be found [here][IAM-instructions-url].### Installation
1. Clone the repo
```sh
git clone https://github.com/empobla/Gira.git
```
2. Install NPM packages
```sh
npm install
```
3. In the project's directory, create a `.env` file with the following keys:
```text
DB=SECRET=
EMAIL_SECRET=
AWS_ACCESS_KEY_ID=
AWS_ACCESS_KEY_SECRET=
AWS_S3_BUCKET_NAME=
```
_Note: Replace everything in between `<>` with your actual keys, and create a secret and email secret key._4. Start the server in development mode!
```sh
npm run devstart
```## Roadmap
- [x] Home Page
- [x] Users
- [x] User pages
- [x] Emails
- [x] User emails
- [x] Automated emails
- [x] Events
- [x] Creation
- [x] User registration
- [x] Mailing List
- [x] Registration
- [x] Mass emails/newsletter
- [x] News and Articles
- [x] CMS panel
- [x] Media upload
- [ ] SEO
- [x] Documentation## Abilities Mastered
- Re-creation of an Adobe Photoshop and Adobe Illustrator design for this website with CSS (front-end)
- Usage of .svg files with CSS to dynamically change their color on events
- AWS
- Elastic Beanstalk
- Route 53
- ACM
- Simple Email Service
- WorkMail
- S3
- Email Domains
- CSS Animations
- Mailing Lists
- PayPal API
- User Registration with Email Confirmation
- User Password Reset Emails
- User Transactional Emails
- JSON Web Tokens
- JSDoc## License
This project is property of Emilio Popovits Blake and Jose Carlos Briones. All rights are reserved. Modification or redistribution of this code must have _explicit_ consent from either owner.
## Contact
Emilio Popovits Blake - [Contact](https://emilioppv.com/contact)
Project Link: [https://github.com/empobla/Gira](https://github.com/empobla/Gira)
## Acknowledgments
* [Email Templater][Email-templater-url]
* [SES Node.js Reference][SES-Node-Reference-url]
* [SES Bulk Emails Tutorial][SES-Bulk-Tutorial-url]
* [SES Bulk Emails Docs][SES-Bulk-Docs-url]
* [SES Email Concepts Docs][SES-Email-Concepts-url]
* [Account Recovery Good Practices][Auth-Recovery-Good-Practices-url]
* [How to make custom language badges for your profile using shields.io][Medium-url]
* [Img Shields](https://shields.io)
* [Simple Icons](https://simpleicons.org)[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555
[linkedin-url]: https://linkedin.com/in/emilio-popovits[product-screenshot]: README/images/thumbnail.png
[MongoDB]: https://img.shields.io/badge/mongodb-ffffff?style=for-the-badge&logo=mongodb&logoColor=47a248
[Mongo-url]: https://www.mongodb.com/
[Express.js]: https://img.shields.io/badge/express-000000?style=for-the-badge&logo=express&logoColor=ffffff
[Express-url]: https://expressjs.com/
[Pug.js]: https://img.shields.io/badge/pug.js-a86454?style=for-the-badge&logo=pug&logoColor=000000
[Pug-url]: https://pugjs.org
[Node.js]: https://img.shields.io/badge/node.js-090c15?style=for-the-badge&logo=nodedotjs&logoColor=339933
[Node-url]: https://nodejs.org
[AWS]: https://img.shields.io/badge/aws-232f3e?style=for-the-badge&logo=amazonaws&logoColor=ff9900
[AWS-url]: https://aws.amazon.com[MongoDB-community-url]: https://www.mongodb.com/try/download/community
[MongoDB-atlas-url]: https://www.mongodb.com/atlas/database
[MongoDB-instructions-url]: https://www.mongodb.com/docs/manual/administration/install-community
[IAM-instructions-url]: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html[Medium-url]: https://javascript.plainenglish.io/how-to-make-custom-language-badges-for-your-profile-using-shields-io-d2aeaf016b6b
[Email-templater-url]: https://beefree.io/editor/?template=empty
[SES-Node-Reference-url]: https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/ses-examples-sending-email.html
[SES-Bulk-Tutorial-url]: https://pandeysoni.medium.com/how-can-we-use-amazon-ses-template-to-send-email-in-node-js-fb162bd8152e
[SES-Bulk-Docs-url]: https://aws.amazon.com/blogs/messaging-and-targeting/introducing-email-templates-and-bulk-sending
[SES-Email-Concepts-url]: https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-concepts-process.html
[Auth-Recovery-Good-Practices-url]: https://aritic.com/blog/aritic-mail/best-practices-to-handle-password-reset-emails[moreinfo-url]: https://emilioppv.com/portfolio/gira
[moreinfo-shield]: https://img.shields.io/badge/more%20info-1b1f24?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAApVBMVEUbHyQbHyQbHyRnam2sra+vsbKys7Wsrq+goqQwNDgaHyQaIilbXWGChIZMT1OYmpwYQFoaICYXRF8WUHQZLjwvMzdwcnaztLZ1d3pcX2IaICUXTG0WUHMXS2sXSGcWT3MaKjcpLTFVWFyFh4lTVllvcnWpqqwYOEwZM0QXTW4XTnAaJS8lKS3IycoYPlYaIyt4e36rra60tba5urutr7BQU1cAAAB8HBV3AAAAAnRSTlOR/KrCyFQAAAABYktHRDZHv4jRAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5wEZCiUZVutNzgAAAGpJREFUCNdjYGBkggNGBmQeiM+EAjC5zCwsrGzsHJwQLhc3ExMPLxMfP5OAIBODkLCIqBi/uASHpJS0jCyDnLyCopIyh4qqmrqGphYDk5Q2WLGOrh63PsgoA0NDI2NDE1PsFqFw0RyJ6gUAuK4HVipJCoQAAAAuelRYdGRhdGU6Y3JlYXRlAAAImTMyMDLWNTDUNTINMTSwMja3MjLVNjCwMjAAAEFRBQlQZi6pAAAALnpUWHRkYXRlOm1vZGlmeQAACJkzMjAy1jUw1DUyDTE0sDI2tzIy1TYwsDIwAABBUQUJeVmGIQAAAABJRU5ErkJggg==