Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
155 changes: 114 additions & 41 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,50 +1,123 @@
# website_api
# Website API

## Installation
1. Create and activate a virtual environment
```bash
python3 -m venv venv
source venv/bin/activate
```
Une API RESTful construite avec Django et Django REST Framework pour gérer le contenu d'un site web, incluant des fonctionnalités de blog, d'événements et de gestion d'utilisateurs.

2. Install dependencies
```bash
pip3 install -r requirements.txt
```

3. Setup a new postgres database
Assuming postgresql is installed in your computer, follow what's next:
- ```bash
# accessing the postgres CLI
sudo -u postgres psql
```
- ```bash
## 📋 Prérequis

- Python 3.8+
- PostgreSQL 12+
- Redis (pour le cache et les files d'attente)
- pip (gestionnaire de paquets Python)

## 🚀 Installation

1. **Cloner le dépôt**
```bash
git clone https://github.com/djangocameroon/website_api.git
cd website_api
```

2. **Configurer l'environnement virtuel**
```bash
python -m venv venv
source venv/bin/activate # Sur Windows: .\venv\Scripts\activate
```

3. **Installer les dépendances**
```bash
pip install -r requirements.txt
```

4. **Configurer la base de données PostgreSQL**
```sql
-- Se connecter à PostgreSQL
sudo -u postgres psql

-- Create a database
CREATE DATABASE django_website_db;

-- create a new user with the details below
CREATE USER 'db_username' WITH ENCRYPTED PASSWORD 'password';
-- Grant all priviledges
GRANT ALL PRIVILEGES ON DATABASE django_website_db TO 'db_username'@'host';
```

If postgreSQL is not installed in the computer, get to the tutorial [for Linux](https://www.cherryservers.com/blog/how-to-install-and-setup-postgresql-server-on-ubuntu-20-04) or [for Windows](https://www.microfocus.com/documentation/idol/IDOL_12_0/MediaServer/Guides/html/English/Content/Getting_Started/Configure/_TRN_Set_up_PostgreSQL.htm).

4. Copy the .env.example file to .env and fill in the values in the .env file.
```bash
cp -r .env.example .env
```
-- Créer la base de données
CREATE DATABASE django_website_db;

-- Créer un utilisateur (remplacez les valeurs entre crochets)
CREATE USER [db_user] WITH PASSWORD '[votre_mot_de_passe]';

-- Accorder les privilèges
GRANT ALL PRIVILEGES ON DATABASE django_website_db TO [db_user];
```

5. **Configurer les variables d'environnement**
```bash
cp .env.example .env
```

Modifiez le fichier `.env` avec vos paramètres :
- `DB_*` : Paramètres de connexion à la base de données
- `SECRET_KEY` : Clé secrète Django (générez-en une nouvelle pour la production)
- `EMAIL_*` : Configuration SMTP pour les emails
- `TWILLIO_*` : Identifiants Twilio pour la vérification par SMS (optionnel)

6. **Appliquer les migrations**
```bash
python manage.py migrate
```

7. **Créer un superutilisateur (optionnel)**
```bash
python manage.py createsuperuser
```

8. **Lancer le serveur de développement**
```bash
python manage.py runserver
```

L'API sera disponible à l'adresse : http://127.0.0.1:8000/
L'interface d'administration sera disponible à : http://127.0.0.1:8000/admin/

## 🏗 Structure du projet

5. Apply database migrations
```bash
python3 manage.py migrate
```
website_api/
├── apps/ # Applications Django
│ ├── blog/ # Gestion des articles de blog
│ ├── events/ # Gestion des événements
│ └── users/ # Gestion des utilisateurs et authentification
├── config/ # Configuration du projet
├── documentation/ # Documentation supplémentaire
├── middlewares/ # Middlewares personnalisés
├── services/ # Logique métier
└── website_api/ # Paramètres principaux du projet
```

## 🔧 Variables d'environnement

| Variable | Description | Valeur par défaut |
|----------|-------------|-------------------|
| `DEBUG` | Mode débogage | `True` en développement, `False` en production |
| `SECRET_KEY` | Clé secrète Django | À définir en production |
| `DB_*` | Paramètres de la base de données | Voir `.env.example` |
| `EMAIL_*` | Configuration SMTP | À configurer pour les emails |
| `REDIS_URL` | URL de connexion à Redis | `redis://127.0.0.1:6379` |
| `TWILLIO_*` | Identifiants Twilio (SMS) | Optionnel |

## 📚 Documentation de l'API

La documentation de l'API est disponible à l'adresse `/api/docs/` lorsque le serveur est en cours d'exécution.

## 🧪 Exécution des tests

6. Run the server
```bash
python3 manage.py runserver
# Exécuter tous les tests
python manage.py test

# Exécuter les tests d'une application spécifique
python manage.py test apps.users
```

## Contributing
Contributions are always welcome! If you have any bug reports, feature requests, or pull requests, please feel free to submit them.
## 🤝 Contribution

Les contributions sont les bienvenues ! Voici comment contribuer :

1. Forkez le projet
2. Créez une branche pour votre fonctionnalité (`git checkout -b feature/ma-nouvelle-fonctionnalite`)
3. Committez vos changements (`git commit -am 'Ajouter une nouvelle fonctionnalité'`)
4. Poussez vers la branche (`git push origin feature/ma-nouvelle-fonctionnalite`)
5. Créez une Pull Request