Projet de l’UE LU3IN017 TechnoWeb de Sorbonne Universite
Lien pour le client
Lien pour Api Document host sur postman
Le code du serveur est maintenant hébergé sur heroku
https://apitw.fuzy.tech
-
Clone this repo
git clone https://github.com/zhenyuefu/technoweb-twitter-server.git
-
Créer un fichier .env à la racine du projet. Les variables d'environnement suivantes doivent être incluses dans le fichier
PORT=<default_8000> MONGODB_URI=<your_mongodb_url> SESSION_SECRET=<your_secret> REDIS_URL=<your_redis_connection_url_for_example:redis://127.0.0.1:6379> // redis used to store the session, if you don't want to use it , delete "store" option of app.use(session) in middleware/index.ts. // you can also store the session in mongodb with package "connect-mongo", uncomment "store" option with mongo at the same place avobe. // see https://github.com/jdesboeufs/connect-mongo -
Pour mongodb, je recommande d'utiliser l'atlas en ligne. Si vous utilisez un mongodb local, veuillez vous assurer que votre
mongod instancesest unReplicaSet. See Deploy a Replica Set for Testing and Development -
run yarn pour installer toutes les dépendances
yarn -
Maintenant, votre serveur est lance.
yarn dev
src/
├── db // model de database
│ ├── db.ts
│ └── models
│ ├── comment.models.ts
│ ├── post.models.ts
│ └── user.models.ts
├── middleware // chargement de tous les middleware
│ └── index.ts
├── routes // route api
│ ├── auth.jwt.bak
│ ├── auth.ts
│ ├── index.ts
│ ├── post.ts
│ ├── search.ts
│ └── user.ts
├── server.ts // entrée du serveur
└── types
└── index.ts // définitions des types
"bcrypt" Utilisé pour crypter les mots de passe
"cors"
"dotenv" Lire les variables d'environnement
"express"
"express-session"
"mongoose"
"mongoose-unique-validator" Veillez à ce que les noms d'utilisateur et les adresses électroniques soient uniques et insensibles à la casse.
"passport"
"passport-local" Utilisé pour gérer les sessions de connexion
Si votre éditeur n'affiche pas le diagramme ci-dessous, vous pouvez cliquer sur ce lien pour aller sur github et le visualiser en ligne.
classDiagram
direction BT
class posts {
objectid _id
int32 __v
objectid author
string content
list imagePath
list comments
isodate createAt
list likes
int32 countLikes
int32 countReTweet
boolean isDelete
------comment------
objectid comments._id
objectid comments.author
list comments.comments
string comments.content
------imagePath-----
string imagePath.deletehash
string imagePath.id
string imagePath.link
......
}
class users {
objectid _id
int32 __v
string username
string firstName
string lastName
string email
string password
string avatar
string bgPicture
string introduction
isodate createAt
isodate updatedAt
list followers
list following
list likes
}