{"id":28226647,"url":"https://github.com/chronosgit/engiworld","last_synced_at":"2025-06-19T07:09:20.131Z","repository":{"id":196474365,"uuid":"695442241","full_name":"chronosgit/EngiWorld","owner":"chronosgit","description":"KBTU \"JS. React\" final project","archived":false,"fork":false,"pushed_at":"2023-12-19T04:11:37.000Z","size":2032,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-13T08:48:53.247Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chronosgit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-09-23T07:35:53.000Z","updated_at":"2023-09-24T10:39:36.000Z","dependencies_parsed_at":"2023-12-18T22:19:35.554Z","dependency_job_id":"86bc998f-6db7-4430-9577-f157bce387ef","html_url":"https://github.com/chronosgit/EngiWorld","commit_stats":null,"previous_names":["chronosgit/engiworld"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chronosgit/EngiWorld","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chronosgit%2FEngiWorld","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chronosgit%2FEngiWorld/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chronosgit%2FEngiWorld/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chronosgit%2FEngiWorld/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chronosgit","download_url":"https://codeload.github.com/chronosgit/EngiWorld/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chronosgit%2FEngiWorld/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260705893,"owners_count":23049494,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-18T12:09:11.933Z","updated_at":"2025-06-19T07:09:15.120Z","avatar_url":"https://github.com/chronosgit.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"App name: EngiWorld\nKBTU \"JS Framework. React\", Fall - final project\n\nBackend application: https://github.com/chronosgit/EngiWorldBackend\n\nAbout this file:\nThe purpose of this file is to provide overview, setup instructions and background information of the project.\n\nApp description:\nEngiWorld is an online social media platform for engineers of all kinds: software, electrical, chemical, mechanical, civil, etc. It aims at providing convenience of communication between engineers all over the globe. Although one might wonder, why need this application when there already are dedicated groups for engineers in existing social media platforms? The answer is simple, first of all our webapp provides a unique sense of unity among engineers, the importance of which is not to be underestimated, secondly it is dedicated solely to engineering with nothing but only top content from fellow engineers, this all of course means more convenience for the users. It also has additional UX features like predefined subtopics that make categorizing posts easier.\nDisclaimer: the app is a student project and as such it isn't currently hosted anywhere on the Web.\n\nFunctionality:\nGuests can read posts, visit certain pages and log in/sign up.\nAuthentication is provided with JWT tokens. Guests are free to create new accounts with their emails, as well as logging into existing ones.\nSign in/sign up is validated on the client-side, only strong passwords are permitted.\nAuthenticated users can make new posts, comment existing ones, like, repost, alter their own profile information, log out, follow and unfollow other users, view other users' profiles.\nAside from username, password and email, personal information includes a short bio and a profile picture, both could be changed on the profile page.\nFrom the profile page users can also list the posts they liked or reposted, as well as their own posts, and also get a list of people they follow.\nUsers can also alter the contents of their posts and comments as well as delete them.\nBoth guests and users can view the feed. The feed contains all of the posts available, but it loads them ad hoc as the user scrolls down the page.\nEveryone can access specific posts from the feed, inspecting their contents and comments.\nEveryone can use search to find specific posts, the search automatically provides matching entries as hints if they're available.\nWriting new posts is convenient as the editor provides users with a number of subtopics for each branch of engineering.\nNews feed can be filtered by time, likes or reposts.\nUsers receive notifications when other users like or comment under their posts, or when they like their comments, or when someone you follow posts something.\nThe webapp has exquisite UI/UX in huge part thanks to the MaterialUI library.\n\nDevelopment team:\nKidirmaganbetov Nurken (frontend, UI/UX, testing, backend)\nSaginbek Iskander (frontend, UI/UX, testing, documentation)\n\nTechnologies used:\nThe app is built with the MERN stack (MongoDB, Express, React, Node) and RESTful API\nFrontend (for more details check package.json):\nHTML/CSS/JSX:\nReactJS\nEmotion\nMaterial UI\nJest\nAxios\n\nBackend (for more details check package.json):\nJS:\nNode.js\nExpress\nMongoDB\nMongoose\nJWT\n\nRequirements:\nSoftware:\npreferrably Ubuntu OS for running MongoDB\nNodejs\nnpm (or yarn)\nMongodb\n\nHardware:\nx64 CPU\nat least 12 GB of free disk space\nmore than 4 GB of RAM\n\nTechnical specifications:\nThis project is a MERN app and as such it's built entirely with JS. Frontend code gets transpiled into backwards-compatible, compact JS code for production using babel.\n\nSetup Instructions:\nIn these steps it is assumed you already have all the necessary software installed and configured on your system, including Node.js and MongoDB, also in the following steps npm is used as the package manager but you can also use other managers like yarn\nCreate an empty react app by running \"npm create-react-app\" in an empty folder, in this folder delete everything you won't need, including all the files that will be replaced by the ones from this repo\nInitialize git\nCopy the frontend source code by running \"git clone https://github.com/chronosgit/EngiWorld.git\" in the desired folder\nNow copy the backend by running \"git clone https://github.com/chronosgit/EngiWorldBackend.git\" in another folder\nThe main working branches of both projects are the \"main\" branch\nInstall all the required dependencies by running \"npm install\" in the same directory as package.json, repeat this step for the backend code\nYou are advised to use the dependencies with the same versions as in their respective package.json files or higher\nTo simply run the react app use \"npm start\"\nTo build the react app type \"npm run build\", the production files will go into the dedicated \"build\" folder\nTo serve the react app use \"serve -s build\" after building it\n\nCreate a \".env\" file in the backend folder, insert the following 2 lines:\nACCESS_TOKEN_SECRET=\"some_string\"\nREFRESH_TOKEN_SECRET=\"some_string\"\n\nTo run the backend side of the app, first start the database by typing \"mongod --port 27017\" in the backend folder, then type \"node app.js\"\n\nIf necessary you can change the ports used by the application which are 3000 (frontend-react), 3001 (backend-node), 27017 (database-mongo)\nTo change the React port number either use a .env file like with Node.js, or specify \"PORT=your_port_number_here\" in \"start\" and/or \"build\" scripts in package.json\nTo change the Node.js port number change the PORT variable in app.js\nTo change the MongoDB port number simply run the same command as above except with a number different from 27017\n\nSource code structural overview:\nFrontend:\n\"public\" folder - contains the service worker file as well as the main index.html file, it also has favicon and static images in their respective subfolders\n\"src\" folder - contains the main part of the React code, including the React app itself - the \"App.js\" file, as well as index.css, index.js, the components folder that contains all of the React components used in this app, as well as some other files\n\nBackend:\n\"handlers\" folder - contains the main part of the backend code, including all of the http server functions\n\"middleware\" folder - contains the middleware files for file processing and managing JWT\napp.js file - the app itself, defines the main variables, URLs, dependencies, etc.\nmodels.js file - the file that contains schemas for data storage","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchronosgit%2Fengiworld","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchronosgit%2Fengiworld","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchronosgit%2Fengiworld/lists"}