CauseConnect is a web application designed to strengthen connections within members of non-profit organizations. It offers a simple platform to view and engage with members of an association. Users can easily manage their social preferences, create profiles, and explore the connections within their community.
- Simple Login System: Secure authentication for user access.
- Homepage: Displays the main actions and statitstics for the user.
- Recommendation algorithm: Recommends users to connect with based on their social preferences and similarity score.
- User Profile: Customize and manage personal preferences, interests, greeting styles.
- Member Profiles: View the social preferences and profiles of other members.
- User Preferences and Profile Management: Users can update their preferences, upload a profile picture, and view their own profile as well as the profiles of other members.
- Connection Management: Users can mark other members as met or unmet, view all members grouped by the first letter of their name, view members they have met, and get user connection recommendations.
- Authentication: Secure user registration and login system.
- API Endpoints: Retrieve users and connections information from the database.
- Homepage Statistics: View statistics on user connections, such as the percentage of users met.
- Database Seeding: Populate the database with user data using a seed script.
CauseConnect is built with the following technologies:
-
Backend:
- Express: Web app framework for Node.js.
- Mongoose: Elegant MongoDB object modeling.
- Passport: Authentication middleware for Node.js.
- Bcrypt: Password hashing.
-
Frontend:
- EJS: Embedded JavaScript templating.
-
Utilities:
- Nodemon: Used to monitor changes in the code and automatically restart the server.
- Multer: Used to upload profile images.
- Dotenv: Used for environment variables from the
.env
file (MongoDB URI). - Faker: Generate fake data for the users.
- Connect-flash: Flash message middleware for Express.
-
Testing:
- Mocha: JavaScript test framework.
- Chai: Assertion library for Node.js and browsers.
- Chai-http: HTTP integration testing with Chai assertions.
Follow these steps to run CauseConnect locally:
-
Clone the Repository:
git clone https://github.com/nunyvega/CauseConnectApp.git
-
Navigate to the Directory:
cd cause-connect
-
Install Dependencies:
npm install
-
Populate the Database with user data:
npm run seed
-
Start the Application: For development:
npm run dev
For production:
npm start
-
Open a Browser:
Navigate tohttp://localhost:3000
or the port specified in your configuration.
- Change form MongoDB Atlas to local instance (optional):
The app will use the MongoDB database in MongoDB Atlas (cloud database service) by default. If you want to use a local database, you can change the MongoDB URI in the.env
file, or simply checkout to theuse-local-DB-instead-of-mongodb-Atlas
branchgit checkout use-local-DB-instead-of-mongodb-Atlas
CauseConnect uses Mocha as its test framework, complemented by Chai for assertions and Chai-http for HTTP integration testing. To run the tests, follow these steps:
- Ensure Dependencies are Installed and user data exists:
If you haven't already, make sure to install all the necessary dependencies:
npm install && npm run seed
- Run the Tests:
This will run all the tests in the
npm test
test
directory.
Feel free to contribute to CauseConnect by submitting pull requests or creating issues for bug reports and feature requests.
ISC
Alvaro Vega / @nunyvega