A platform targeted towards centralizing communities and their networks and facilitate engagement. Saberchat allows users to quickly share and access important information, and presents multiple features for community organizations. Targeted towards schools, clubs and student-run programs and is currently servicing such groups throughout the Bay Area while also used to help schools for underprivileged students in India.
The above links been temporarily disbaneded as we are no longer servicing the above domains.
View a detailed overview of the platform, codebase and tech used, as well as an in-depth tutorial of the MEAN Stack on our site documentation!
Version History: Linked here
- App: Website's main file, implements all routes and libraries
- Controllers: Server logic files that are used in the callbacks of routes
- JoiValidation: schema for form validation
- Middleware: express middleware for permissions, uploads and form validation
- Models: Mongoose DB models for collection schema
- Procfile: Tells Heroku what command to call on app start (Deprecated)
- Public: Contains All Front-End CSS, JS and Static Display Images
- Routes: Server routes, accessed in app.js
- Services: Configurations for libraries and APIs such as image uploads and email sending
- Socket: Controls callback for real-time socket.io calls
- Utils: Functions used platform-wide in both controllers and EJS logic
- Views: EJS files of front end code for all pages
- Axios: Facilitates JSON requests and responses. Saberchat currently uses it for email sending with SendGrid
- Bad-Words: Filters and censors any explicit text
- Body-Parser: Parses headers and data from HTML form bodies
- Cloudinary: Online platform which stores our uploaded media. Saberchat connects to it via an API and uploads images that are processed with Multer
- Connect-Flash: Flashes success and error messages on screen
- DataURI: Converts media uploads into buffers in preparation for Multer processing
- DateFormat: Provides an easy way to format and display dates and times
- Dotenv: Allows server to access environmental variables, the contents of the .env
- EditorJS: Text and content formatting, used for articles
- EJS: View engine that is used for all front-end files. Combines JavaScript logic with HTML markup to build platform based on data sent from the server
- Express: Node.js framework that is used for all routes and request-response systems. The backbone of our server
- Express-Mongo-Sanitize: Handles and sanitizes user data from server to MongoDB database
- Express-Session: Platform for cookie storage and security
- Fillers: Stores all filler words, used to build the Keyword Filter
- Helmet: Used for security purposes, to moderate valid data sources for different media and content formats
- Joi: Form validation package. Develops schema that are used to validate form data with the Sanitize-HTML package
- MemoryStore: Stores records of express sessions
- Method-Override: Allows forms to send PUT and DELETE requests
- Mongoose: Connects server to MongoDB database
- Multer: Processes uploaded media from files to a format that can be uploaded and stored in cloudinary
- Nodemon: Used by developers to automatically restart server when any backend code is updated
- Node-Schedule: Used to schedule certain tasks that the server performs without user involvement
- Passport: Used to authenticate users for logging in and registering accounts
- Passport-Local-Mongoose: Used to combine user data with passport authentication to log in users
- Passport.Socketio: Validating user information for real-time actions with socket.io
- Sanitize-HTML: Used in conjunction with Joi schema to validate form data
- Serve-Favicon: Used to send favicons from backend storage to EJS pages
- Socket.io: Module for real-time activity including shop orders and chat messages