Description and capabilities of CRYSTAL v2.0
October 28
upd: October 29
26
Contents:
Architecture:
SPA, REST API, FSD.
Building:
Full code | Package.json: frontend | backend
Structure:
- MongoDB v8.0.4.
- Express.js v4.21.2.
- React v19.0.0.
- Node.js v24.0.2.
- NPM v11.3.0.
- PM2 v5.4.3.
- Vite v6.1.0.
Description and features
Functionally, this version is almost completely identical to CRYSTAL v1.0, but has a number of key improvements:
- 1. Mongoose has been removed and replaced by native driver MongoDB.
- 2. Data schemas for all collections (users, posts, likes, hashtags), defined using the JSON Schema standard and initialized in MongoDB using the $jsonSchema. This approach provides consistency and a common structure for documents in collections.
- 3. For hashtags and likes separate collections were created with denormalization and indexing, which will provide higher performance with a large amount of data.
- 4. To search the content (this component will be published in the repository, uses MongoDB full-text search based on operator $text.
- 5. Added user status (online/offline). The logic is implemented using WebSocket (frontend | backend). Added display of the time of the last visit to the website.
- 6. Multer has been replaced by Sharp.
- 7. Added the ability to upload GIF images for posts and user avatar/banner. GIFs are sanitized via special logic in sharp-upload.js, for cybersecurity. All images except GIF, converted to WebP.
- 8. Added the ability to specify the user's gender.
- 9. On the user page, a section has been added with detailed information about the user (gender, registration date, date of user data update).
- 10. Added user privacy setting that allows you to hide gender.
- 11. Added a user interface setting that allows you to hide all GIF images on the site.
- 12. The security system complies with CRYSTAL v1.0 (Production).
Share
BTC (Network BTC) - 1C2EWWeEXVhg93hJA9KovpkSd3Rn3BkcYm
Ethereum (Network ERC20) - 0x05037ecbd8bcd15631d780c95c3799861182e6b8





Comment on