No description
  • Java 47.5%
  • TypeScript 34.2%
  • HTML 10.2%
  • Python 7.7%
  • CSS 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2025-06-04 20:02:57 +02:00
.vscode implemented security 2025-04-28 23:34:19 +02:00
core . 2025-06-04 19:34:39 +02:00
ui . 2025-06-04 19:03:28 +02:00
ui_deprecated . 2025-06-04 15:52:40 +02:00
utils/verify . 2025-05-26 16:43:48 +02:00
.gitignore . 2025-05-21 05:46:22 +02:00
docker-compose.yml removed keycloack from docker compose 2025-04-30 12:30:31 +02:00
README.md . 2025-06-04 20:02:57 +02:00

Ciudades

Resources

arango db

recommendation engine

data

checklist:

  • Spring Validator
  • Spring REST with Springdoc
  • Spring Testing
  • Spring Scheduling
  • prometheus and grafana for monitoring
  • use jenkins for CI/CD
  • setup maven build checks like static code analysis and FOSS scans.

Planning

Ciudades aims to be a social network based on geography and that will then incorporate many other elements to increase engagement and scope.

It will be an angular frontend with a spring boot backend that will be both a website and a mobile app (pwa)

Services

Case studies

Requirements

  • Management of areas and related resources (stuff to see, useful links like government offices, etc and take inspiration by cities subreddits)
    • make db schema
    • choose db provider -> arangodb
    • flesh out db schema
  • map features (google maps, tomtom amigo)
    • display map
    • get user current location
    • show sections with resources
  • profiles
    • design frontend routes for areas and users
      • at /area/:id show a specific area
      • at /user/:id show a specific user
    • design feed system
      • make component for every type of resource
      • display resources in feed
      • display resource in sections
    • add personal profile page
      • take inspiration from twitter user profile
      • display posts in feed
    • Feed
      • the feed is made of posts and resources from followed areas
      • main page is either login or general feed
      • add specific feed for area
    • sign up frontend view
      • issue jwt
      • store jwt in database
      • register user in database
      • handle sign up in ui
    • sign in frontend view
      • check if user in db
      • remake jwt token
    • sign out frontend view
      • remove jwt from user in both ui and core
  • handle chats
    • Single chat between users
    • Multi chat between user (whatsapp, telegram, signal)
    • single chat between entity and user like in whatsapp business
  • Manage transportation (buy flight and train ticket, organize trips for trekking, holiday and so on)
  • bits (instagram reels, tiktok, youtube shorts)
  • padlet
  • marketplace (facebook, subito, milanuncios)
  • i18n (?)
  • different kind of profile to imitate other apps: restaurant (the fork), news (newspapers), stores (amazon) and so on.
  • music capabilities (spotify)
  • arguments (reddit)

Research and Prototypes

the prototype will be completed once having a full fledge app that allows for user to stay in contact with different areas by subscribing to their feeds and to access the different resources made available while being able to do something similar themselves and be also a mobile app by itself.

Once that will be achieved chat functionalities will be added to it and then much more.

The first prototype will be completed once achieved the basic social media features:

  • a user profile can be fully displayed
  • a user can post and edit its own profile
  • users can follow each others
  • an area profile can be fully displayed
  • an area can post and edit its profile
  • a user can manage areas and gain the manager status
  • a user can comment a resource

Directory

Angular

src/
├── app/
│   ├── components/
│   ├── directives/
│   ├── guards/
│   ├── interceptors/
│   ├── models/
│   ├── pages/
│   ├── pipes/
│   ├── services/
│   └── stores/
└── environments/

Spring Boot

ciudades/
├── error/
├── internal/
│   ├── area/
│   ├── media/
│   ├── resource/
│   └── user/
├── security/
├── utils/
└── web/

REST API

Media

  • POST/api/media creates a new media
  • GET/api/media/{id} retrieves the json data relative to the media
  • GET/api/media/{id}/raw retrieves the actual media file
  • DELETE/api/media/{id} removes a media (soft deletion)

Areas

  • POST/api/areas creates a new area

  • GET/api/areas/{slug} retrieves the json data of an area by its slug

  • PUT/api/areas/{slug} updates an area

  • DELETE/api/areas/{slug} removes an area (soft deletion)

  • POST/api/areas/areas creates link to an area

  • DELETE/api/areas/areas removes the link to an area

  • GET/api/areas/areas/{slug} retrieves all the linked areas

  • POST/api/areas/{slug}/resources creates a new resource and links it to the area

  • GET/api/areas/{slug}/resources retrieves all the links to the resources of the area

  • DELETE/api/areas/{slug}/resources/{id} removes link to a resource of an area

  • POST/api/areas/{slug}/sections creates a new section for an area and links to it

  • GET/api/areas/{slug}/sections retrieve all the available sections

  • GET/api/areas/{areaSlug}/sections/{sectionSlug} retrieve the section and its resources of an area by its slug. Pagination refers to the resources

  • PUT/api/areas/{areaSlug}/sections/{sectionSlug} updates the section of an area

  • DELETE/api/areas/{areaSlug}/sections/{sectionSlug} removes a section to an area (soft deletion)

  • POST/api/areas/{areaSlug}/sections/{sectionSlug}/resources creates a new resource for a section and links to it

Resources

  • POST/api/resources creates a new resource
  • GET/api/resources/{id} retrieves a resource by its id
  • PUT/api/resources/{id} updates a resource by its id
  • DELETE/api/resources/{id} removes a resource by its id

Users

  • POST/api/user/sign/up create a new user

  • POST/api/user/sign/in signs a user in

  • POST/api/user/sign/off signs a user off

  • GET/api/users/{username} retrieves a user by its username

  • PUT/api/users/{username} updates a user

  • DELETE/api/users removes a user (soft deletion)

  • POST/api/users/users creates link to a user

  • DELETE/api/users/users removes link to a user

  • GET/api/users/users/{username} retrieves all the linked users

  • POST/api/users/areas creates link to a area

  • DELETE/api/users/areas removes link to a area

  • GET/api/users/areas retrieves all the linked areas

  • POST/api/users/resources creates a resource and links it to a user

  • DELETE/api/users/resources removes link to a resource

  • GET/api/users/resources retrieves all the linked resource

Bugs

  • possibility to add multiple links with same data creating redundant vertex
  • deleting a user all the old links still remain leading to a dead end (maybe good with soft deletion?)