Description and capabilities of CRYSTAL v1.0
28.02.2025
Architecture: SPA, REST API.
Building:
MERN stack (MongoDB, Express.js, React, Node.js).
Full code | Package.json – Frontend | Backend
Structure:
- MongoDB v8.0.4.
- Express.js v4.21.2.
- React v19.0.0.
- Node.js v23.6.1.
- PM2 v5.4.3.
- PNPM v10.5.2.
- Vite v6.1.0.
Description and capabilities:
- 1. Register/edit/delete user, change password.
- 2. Register/authentication/authorization and general work with requests, built on TanStack Query v5.
- 3. reCAPTCHA v3 when registering a user.
- 4. Avatar, banner, description and the ability to create a unique user ID.
- 5. The username can contain any symbols and emoji, it is not necessary to enter the last name.
- 6. User registration with a check for those already in the database – email and ID, without regard to the case of letters.
- 7. When registering, it is not necessary to enter the ID and name. If there is no id and name, the id is created automatically using – Nano ID, and the name remains empty.
- 8. Administrator mode (editing/deleting users and posts).
- 9. Adding/editing/deleting posts.
- 10. Post views counter.
- 11. Auto-expanding textarea with – react-textarea-autosize.
- 12. Compressing uploaded images in the browser, with Browser Image Compression.
- 13. Automatic creation of image directories, setting maximum size and allowed formats using Multer.
- 14. Infinite scroll of posts using Intersection Observer API and TanStack Query (useInfiniteQuery).
- 15. Like system and a separate page with liked posts.
- 16. Hashtag system. A separate page for a specific hashtag. Hashtags are sorted without regard to case, for example, when creating a hashtag – ‘CRYSTAL’, subsequent hashtags with the names – ‘Crystal’ and ‘CRYstal’, will be sorted in the block of recommended hashtags under the name – ‘CRYSTAL’.
- 17. Translation into English and Russian, using react-i18next.
- 18. Sorting recommended posts using Plurals.
- 19. Dark theme using Redux Toolkit, data attributes and css variables.
- 20. Frontend validation, using Yup, sometimes custom.
- 21. Backend validation, using express-validator, sometimes custom.
- 22. Cookie/JWT authentication (HTTPonly, Secure, SameSite: Strict).
- 23. Access control to specific pages, editing users and posts.
- 24. Configuring the Nginx server with security and access control in mind.
- 25. Installation and configuration of automatic renewal, free SSL certificate – Let’s Encrypt.
- 26. The project uses only pure JSX and CSS, there are no template engines for layout: Bootstrap, MUI, etc. In every the component has – module.css.
Share
BTC (Network BTC) - 1C2EWWeEXVhg93hJA9KovpkSd3Rn3BkcYm
Ethereum (Network ERC20) - 0x05037ecbd8bcd15631d780c95c3799861182e6b8
Comment on