Skip to content

Latest commit

 

History

History
172 lines (112 loc) · 7.56 KB

README.md

File metadata and controls

172 lines (112 loc) · 7.56 KB

Project Ichnaea

This workspace has been generated by Nx, Smart Monorepos · Fast CI.

Integrate with editors

Enhance your Nx experience by installing Nx Console for your favorite editor. Nx Console provides an interactive UI to view your projects, run tasks, generate code, and more! Available for VSCode, IntelliJ and comes with a LSP for Vim users.

Nx plugins and code generators

Add Nx plugins to leverage their code generators and automated, inferred tasks.

# Add plugin
npx nx add @nx/react

# Use code generator
npx nx generate @nx/react:app demo

# Run development server
npx nx serve demo

# View project details
npx nx show project demo --web

Run npx nx list to get a list of available plugins and whether they have generators. Then run npx nx list <plugin-name> to see what generators are available.

Learn more about code generators and inferred tasks in the docs.

Running tasks

To execute tasks with Nx use the following syntax:

npx nx <target> <project> <...options>

You can also run multiple targets:

npx nx run-many -t <target1> <target2>

..or add -p to filter specific projects

npx nx run-many -t <target1> <target2> -p <proj1> <proj2>

Targets can be defined in the package.json or projects.json. Learn more in the docs.

Set up CI!

Nx comes with local caching already built-in (check your nx.json). On CI you might want to go a step further.

Explore the project graph

Run npx nx graph to show the graph of the workspace. It will show tasks that you can run with Nx.

Connect with us!

Τεχνολογίες που χρησιμοποιήθηκαν:

Smart Contract

  • Solidity: Χρησιμοποιήσαμε Solidity για το smart contract λόγω της ευκολίας στη χρήση, του καλού documentation, και της ταχύτητας ανάπτυξης και υλοποίησης που απαιτήθηκε στον διαγωνισμό, καθώς υπήρχε οικειότητα.

  • Infura: Παρέχει RPC nodes και λειτουργεί ως γέφυρα μεταξύ Web2 και Web3 για την ανάπτυξη dApps και hybrid apps, όπως στη δική μας περίπτωση.


Back-end

  • Express: Ελαφρύ και απλό backend library για Node.js.
  • Mongoose: ODM για τη βάση δεδομένων MongoDB. Προτιμήθηκε λόγω της απλότητας στις σχέσεις μεταξύ οντοτήτων, της απόδοσης, της ευκολίας χρήσης, και της δυνατότητας κλιμάκωσης.
  • RabbitMQ: Χρησιμοποιήθηκε για ενδο-υπηρεσιακή επικοινωνία, παρέχοντας μεγάλη ευελιξία στον χειρισμό μηνυμάτων, επιβεβαίωση παραλαβής, ανάγνωσης κ.λπ.

Front-end

  • Next.js: Για υψηλές επιδόσεις και SEO scores, υποστηρίζοντας SSG, SSR, και SPA.
  • Tailwind CSS: Για ευέλικτη και γρήγορη ανάπτυξη UI.
  • shadcn/ui: Χρησιμοποιήθηκε για τη δημιουργία βασικών components.

Developer Experience

  • NX: Monorepo manager για TypeScript/JavaScript. Παρέχει generators για Express, Next, e2e testing, unit testing.
  • GitHub: Για Version Control System (VCS).
  • v0: Χρησιμοποιήθηκε για την παραγωγή pure components και mockups του front-end, διευκολύνοντας την παρουσίαση και την οπτικοποίηση του τελικού προϊόντος.
  • ChatGPT: Χρησιμοποιήθηκε ως εργαλείο brainstorming, γρήγορης έρευνας, και παροχής παραδειγμάτων για libraries.
  • Co-pilot: Εργαλείο για επαναλαμβανόμενες εργασίες και αύξηση της παραγωγικότητας.
  • webpack: Χρησιμοποιήθηκε για το bundling της TypeScript.

Currently used js libraries

  • simple-git: Ελαφρύ API για προγραμματιστική χρήση του GIT, επιτρέποντας τη δημιουργία "Git-as-a-service" software.
  • Ethers.js: Πλήρες library για το Ethereum σε TypeScript. Χρησιμοποιήθηκε για την αλληλεπίδραση με το smart contract μέσω του Infura.

Άλλες οικίες τεχνολογίες απαραίτητες για την αποπεράτωση του project:


Quality Assurance

  • JMeter: Για load testing.
  • jUnit: Για unit testing.
  • Cypress: Για end-to-end testing, με boilerplate generators από το NX.

CI/CD

  • GitHub Actions: Για τη δημιουργία CI/CD pipelines.

Deployment & Cloud

  • Google Cloud: Χρησιμοποιήθηκε για deployment μέσω του Google Kubernetes Engine και virtual storage για CDN. Γνωρίζουμε και τα αντίστοιχα από DigitalOcean.
  • Kubernetes & Docker: Για deployment του backend. Τα containerized microservices μπορούν να κλιμακωθούν ανάλογα με το traffic.
  • Vercel: Για deployment του front-end. Παρέχει analytics (π.χ. A/B testing) και ενσωματώνεται με NX + GitHub.
  • Cloudflare: Για DNS management, attack mitigation, caching, optimization, και analytics.

Tracing & Observability

  • Sentry.io: Για microservice tracing και observability (βασισμένο στο OpenTelemetry).

HTTP Tunneling

  • Ngrok: Για HTTP tunneling, επιτρέποντας incoming HTTP/websocket traffic στο localhost development environment.

JavaScript Libraries

  • i18n: Για μεταφράσεις του UI.
  • Zod: Για Data Transfer Object validation.
  • JWT: Για stateless authorization.
  • RxJS: Για async stream pipelines, όπως message processing.
  • Socket.io: Για real-time επικοινωνία server-to-client (π.χ. για notifications).

Caching

  • Redis: Για γρήγορο in-memory caching (cache aside, function memoization).

Documentation

  • Swagger: Για τεχνική τεκμηρίωση (βασισμένο στο OpenAPI, με Zod integration).

Συμπέρασμα

Οι παραπάνω τεχνολογίες (εκτός από το simple-git, το οποίο είναι business logic specific) μας επιτρέπουν να υλοποιήσουμε οποιαδήποτε κλασική Web2 εφαρμογή ή hybrid εφαρμογή με Web3 integrations.