|
1 | 1 | # Personal Website Project |
2 | 2 |
|
3 | | -A Django-based personal website project aimed at building an advanced portfolio platform. Currently, the project focuses on backend development, with basic user authentication implemented. |
| 3 | +A Django-based personal website project aimed at showcasing backend development skills while building the foundation for a professional portfolio platform. The project currently focuses on backend functionality, with a basic frontend skeleton to support future interactive features. |
4 | 4 |
|
5 | 5 | --- |
6 | 6 |
|
7 | 7 | ## Table of Contents |
8 | 8 |
|
9 | | -- Overview |
10 | | -- Features |
11 | | -- Installation |
12 | | -- Usage |
13 | | -- Future Development |
14 | | -- License |
| 9 | +- [Overview](#overview) |
| 10 | +- [Technology Stack](#technology-stack) |
| 11 | +- [Features](#features) |
| 12 | +- [Installation](#installation) |
| 13 | +- [Usage](#usage) |
| 14 | +- [Future Development](#future-development) |
| 15 | +- [License](#license) |
15 | 16 |
|
16 | 17 | --- |
17 | 18 |
|
18 | 19 | ## Overview |
19 | 20 |
|
20 | | -This project is the foundation for a personal portfolio website. The backend currently supports: |
| 21 | +This Django project is a personal website designed to demonstrate backend engineering capabilities, while serving as a platform for a portfolio. |
21 | 22 |
|
22 | | -- User registration and login |
23 | | -- Basic session-based authentication (login/logout) |
24 | | -- Protected index page that checks whether a user is logged in |
| 23 | +Current backend functionality includes: |
25 | 24 |
|
26 | | -The project is intended to be expanded into an interactive portfolio showcasing projects and personal achievements. |
| 25 | +- Passwordless user registration and login using **magic links** sent via email |
| 26 | +- Email verification workflow to ensure valid accounts |
| 27 | +- Mailing list opt-in system for newsletters and updates |
| 28 | +- Custom User model storing extended information (email, name, verification status, consent) |
| 29 | +- Basic frontend skeleton using HTML and Tailwind CSS for structure and forms |
| 30 | + |
| 31 | +The project is intended to evolve into a fully interactive portfolio website with dynamic content and modern frontend enhancements. |
| 32 | + |
| 33 | +--- |
| 34 | + |
| 35 | +## Technology Stack |
| 36 | + |
| 37 | +- Python 3.11 |
| 38 | +- Django 5.x |
| 39 | +- SQLite (default; can be swapped with PostgreSQL or other DB) |
| 40 | +- Tailwind CSS (frontend skeleton) |
27 | 41 |
|
28 | 42 | --- |
29 | 43 |
|
30 | 44 | ## Features |
31 | 45 |
|
32 | | -- User Authentication: Users can register, log in, and log out. |
33 | | -- Protected Index Page: /main checks if a user is logged in. |
34 | | - - Logged-in users see users.html (confirmation they are authenticated). |
35 | | - - Unauthenticated users are redirected to the login page. |
36 | | -- Basic Sessions: User authentication uses Django’s built-in sessions. |
37 | | -- Backend-Focused: Currently focuses on backend; frontend enhancements are planned. |
| 46 | +- **User Authentication**: Register and log in using secure, signed email tokens (magic links) |
| 47 | +- **Email Verification**: Users must verify their email before gaining full access |
| 48 | +- **Mailing List Consent**: Optional opt-in during registration for newsletters |
| 49 | +- **Custom User Model**: Stores email, name, verification status, and mailing list preference |
| 50 | +- **Backend-Focused Architecture**: Demonstrates session management, token signing, and secure flows |
| 51 | +- **Basic HTML Templates**: Provide structural placeholders for future interactive pages |
38 | 52 |
|
39 | 53 | --- |
40 | 54 |
|
41 | 55 | ## Installation |
42 | 56 |
|
43 | 57 | 1. Clone the repository: |
44 | 58 |
|
| 59 | +``` |
45 | 60 | git clone https://github.com/OhACD/website |
46 | 61 | cd website/my_website |
| 62 | +``` |
47 | 63 |
|
48 | 64 | 2. Create a virtual environment and activate it: |
49 | 65 |
|
| 66 | +``` |
50 | 67 | python -m venv .venv |
51 | | -# Windows |
| 68 | +# Windows (PowerShell) |
52 | 69 | .venv\Scripts\Activate.ps1 |
53 | | -# Linux/Mac |
| 70 | +# Linux / Mac |
54 | 71 | source .venv/bin/activate |
| 72 | +``` |
55 | 73 |
|
56 | 74 | 3. Install dependencies: |
57 | 75 |
|
| 76 | +``` |
58 | 77 | pip install -r requirements.txt |
| 78 | +``` |
59 | 79 |
|
60 | 80 | 4. Apply migrations: |
61 | 81 |
|
| 82 | +``` |
62 | 83 | python manage.py migrate |
| 84 | +``` |
63 | 85 |
|
64 | 86 | 5. Run the development server: |
65 | 87 |
|
| 88 | +``` |
66 | 89 | python manage.py runserver |
| 90 | +``` |
67 | 91 |
|
68 | | -6. Access the site at: http://127.0.0.1:8000/main |
| 92 | +6. Access the site at: [http://127.0.0.1:8000/core](http://127.0.0.1:8000/core) |
69 | 93 |
|
70 | 94 | --- |
71 | 95 |
|
72 | 96 | ## Usage |
73 | 97 |
|
74 | | -- Navigate to /main for the index page. |
75 | | -- If unauthenticated, you will be redirected to /login. |
76 | | -- Register new users at /register, which logs in users immediately. |
77 | | -- Logout via /logout. |
78 | | - |
79 | | -Note: Full session management and advanced user session features are planned for future development. |
| 98 | +- Visit `/core` for the landing page with links to registration, login, and site sections. |
| 99 | +- Registration allows users to opt-in to the mailing list. |
| 100 | +- Users receive a verification email; clicking the link completes registration. |
| 101 | +- Login uses a **magic link** sent to the registered email—no password required. |
| 102 | +- Templates currently provide basic structure and forms; frontend enhancements will be added in future updates. |
| 103 | +- Email testing can be done via Django console backend or a configured SMTP server. |
80 | 104 |
|
81 | 105 | --- |
82 | 106 |
|
83 | 107 | ## Future Development |
84 | 108 |
|
85 | | -- Implement advanced session management (remember me, session expiration, etc.) |
86 | | -- Build interactive portfolio pages with dynamic content |
87 | | -- Add frontend enhancements using modern styling or React components |
88 | | -- Include analytics and project tracking for portfolio items |
| 109 | +- Expand frontend with **Tailwind CSS or React** for interactive, polished UI |
| 110 | +- Implement **comment and like system** for portfolio projects |
| 111 | +- Add **user dashboards and profiles** for logged-in users |
| 112 | +- Enhance session management (session expiration, "remember me") |
| 113 | +- Integrate analytics for project interactions and views |
| 114 | +- Implement real mailing list integration (Mailchimp, SendGrid, etc.) |
| 115 | +- Add additional backend features for a fully dynamic portfolio experience |
89 | 116 |
|
90 | 117 | --- |
91 | 118 |
|
92 | 119 | ## License |
93 | 120 |
|
94 | | -This project is open-source and available under the MIT License. |
| 121 | +This project is open-source and available under the **MIT License**. |
0 commit comments