diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b821713 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,46 @@ +# Use an official Python runtime as a parent image +FROM python:3.12-slim + +# Set environment variables +ENV PYTHONDONTWRITEBYTECODE 1 +ENV PYTHONUNBUFFERED 1 +ENV DJANGO_SETTINGS_MODULE url_manager.settings + +# Set work directory +WORKDIR /app + +# Install system dependencies +RUN apt-get update && apt-get install -y --no-install-recommends \ + gcc \ + nodejs \ + npm \ + gettext \ + && rm -rf /var/lib/apt/lists/* + +# Install Python dependencies +COPY requirements.txt /app/ +RUN pip install --upgrade pip && pip install -r requirements.txt + +# Copy project +COPY . /app/ + +# Install Tailwind CSS dependencies +RUN python manage.py tailwind install + +# Build Tailwind CSS +RUN python manage.py tailwind build + +# Collect static files +RUN python manage.py collectstatic --noinput + +# Compile translation messages +RUN python manage.py compilemessages --locale=zh_Hans + +# Create data directory for SQLite database +RUN mkdir -p /app/data && chmod 777 /app/data + +# Expose port 8000 +EXPOSE 8000 + +# Run the application +CMD ["gunicorn", "url_manager.wsgi:application", "--bind", "0.0.0.0:8000"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..0314620 --- /dev/null +++ b/README.md @@ -0,0 +1,76 @@ +# URL Manager + +URL Manager is a Django-based web application for managing and tracking short URLs. + +## Features + +- Create, edit, and delete short URL links +- Track click statistics for each link +- Search functionality for quick access to links +- Internationalization support (English and Simplified Chinese) +- Responsive design using Tailwind CSS + +## Prerequisites + +- Docker and Docker Compose + +## Installation and Setup with Docker + +1. Clone the repository: + ``` + git clone https://github.com/yourusername/url-manager.git + cd url-manager + ``` + +2. Build the Docker image: + ``` + docker build -t url-manager . + ``` + +3. Create a Docker volume for persistent database storage: + ``` + docker volume create url-manager-data + ``` + +4. Run the Docker container: + ``` + docker run -d --name url-manager-container -p 8000:8000 -v url-manager-data:/app/data url-manager + ``` + +5. Initialize the database and create a superuser: + ``` + docker exec -it url-manager-container python manage.py migrate + docker exec -it url-manager-container python manage.py createsuperuser + ``` + +6. Open your web browser and navigate to `http://localhost:8000` to access the application. + +## Usage + +- To create a new short URL, click on the "Create New Link" button on the home page. +- To edit or delete a link, use the corresponding buttons in the link list. +- To view detailed statistics for a link, click on the "Details" button. +- Use the search bar in the navigation to quickly find links by alias or original URL. + +## Admin Interface + +To access the admin interface: + +1. Go to `http://localhost:8000/admin` +2. Log in with the superuser account you created earlier + +## Changing the Language + +To switch between English and Simplified Chinese, use the language selector in the navigation bar. + +## Persistent Data + +The SQLite database is stored in the Docker volume `url-manager-data`. This ensures that your data persists even if the container is stopped or removed. To backup your data, you can copy the contents of this volume. + +## Contributing + +Contributions are welcome! Please feel free to submit a Pull Request. + +## License + +This project is licensed under the MIT License. diff --git a/links/templates/links/link_list.html b/links/templates/links/link_list.html index 82e5f6b..c0bd92a 100644 --- a/links/templates/links/link_list.html +++ b/links/templates/links/link_list.html @@ -89,7 +89,7 @@ {% empty %}